paiip lab 2

10
Ministerul Educaţiei al Republicii Moldova Universitatea Tehnică a Moldovei Facultatea Calculatoare, Informatică şi Microelectronică Raport Lucrarea de laborator nr. 2 Programarea Aplicațiilor Incorporate și Independente de Platformă Tema: Elaborarea unei aplicații cu XML A efectuat: St. gr. TI-114 Vasilachi Igor

Upload: grigore-vieru

Post on 03-Feb-2016

19 views

Category:

Documents


0 download

DESCRIPTION

paiip lab2 android

TRANSCRIPT

Page 1: paiip Lab 2

Ministerul Educaţiei al Republicii Moldova

Universitatea Tehnică a Moldovei

Facultatea Calculatoare, Informatică şi Microelectronică

RaportLucrarea de laborator nr. 2

Programarea Aplicațiilor Incorporate și Independente de Platformă

Tema: Elaborarea unei aplicații cu XML

A efectuat: St. gr. TI-114 Vasilachi Igor

A verificat: Antohi I.

Page 2: paiip Lab 2

Chişinău 2013

Sarcina lucrării:

Elaborarea unei aplicații ce va efectua următoarele operații asupra fișierului XML:

Citirea datelor

Editarea datelor

Adaugarea date noi

Sortare/Căutare

Realizarea lucrării:

Pentru realizarea acestei lucrări de laborator vom crea un proiect nou în Eclipse vom

specifica parametrii pentru aplicația dată după ce proiectul a fost creat creem un dosar în mapa res a

proiectului cu denumirea XML în acest dosar vom plasa fișierul XML care va conține careva date

prestabilite. Acum vom crea structura fișierului XML după care îl vom salva cu denumirea

custom.xml vezi codul de mai jos:

<?xml version="1.0" encoding="UTF-8" ?>

<Obiecte> <obiect> <title>Va contine tilul elementului</title> <year>anul</year> <description>descrierea</description>

<image>adresa imaginei locale/din device</image> </obiect> <obiect> <title>Va contine tilul elementului</title> <year>anul</year> <description>descrierea</description>

<image>adresa imaginei locale/din device</image> </obiect>

. . .

</Obiecte>

Creem o nouă clasă Obiect.java în care vom salva datelele, mai jos este prezentă această

clasă:

package com.igor.xml.xmldatabase;

public class Obiect { private String nume; private int an; private String image; private String descriere;

2

Page 3: paiip Lab 2

public Obiect(String nume, int an, String img, String descriere){ super(); this.nume = nume; this.an = an; this.image = img; this.descriere = descriere; } public void setNume(String nume) { this.nume = nume; } public void setAn(int an) { this.an = an; } public void setImage(String image) { this.image = image; } public void setDescriere(String descriere) { this.descriere = descriere; } public String getNume() { return nume; } public int getAn() { return an; } public String getImage() { return image; } public String getDescriere() { return descriere; }}

După ce am creat fișierul custom.xml și am adăugat careva date în el vom trece la etapa

citirii acestuia și anume vom folosi metoda XmlPullParse.

Citirea datelor din fișierul „custom.xml” prestabilit:

Vom citi datele din fișierul xml și le vom adăuga în clasa creată precedent în într-o listă.

Resources res = activity.getResources();

XmlResourceParser xpp = res.getXml(R.xml.custom);xpp.next();int eventType = xpp.getEventType(); String title="", description="", tag="";int year = 0;

3

Page 4: paiip Lab 2

while (eventType != XmlPullParser.END_DOCUMENT){

if (eventType == XmlPullParser.START_TAG) {tag = xpp.getName();

} else if (eventType == XmlPullParser.TEXT) {

if(tag.equals("title")) {title = xpp.getText();

}

else if(tag.equals("year")){year = Integer.parseInt(xpp.getText());

}

else if(tag.equals("description")){ description = xpp.getText();

}else if(tag.equals("image")){

myItem.add(new Obiect(title, year, xpp.getText().toString() , description));

}} eventType = xpp.next();

} // end while loop

Codul pentru inscrierea datelor din listă în XML după cum se observă se crează un fișier nou

cu denumirea myxml.xml acesta a fost creat ca variabilă globală și în funcția dată se apelează către

acest fișier pentru înscrierea datelor, aceste date sunt luate din myItem care este o listă în care se

salvează toate datele.

Afișarea datelor în listview

private class myListAdapter extends ArrayAdapter<Obiect>{

public myListAdapter(){super(MainActivity.this, R.layout.row, myItem);

}

@Overridepublic View getView(int position, View convertView, ViewGroup parent) {

View itemView = convertView; if(itemView == null){

itemView = getLayoutInflater().inflate(R.layout.row, parent, false );

}Obiect currenObiect = myItem.get(position); // Get item titleTextView nameText = (TextView)itemView.findViewById(R.id.item_name);

4

Page 5: paiip Lab 2

nameText.setText(currenObiect.getNume());

//Get item yearTextView year = (TextView)itemView.findViewById(R.id.item_an);

year.setText(""+currenObiect.getAn());

//Get item imageImageView imgv = (ImageView)itemView.findViewById(R.id.item_icon);

File imgFile = new File(currenObiect.getImage());

if(imgFile.exists()) { imgv.setImageURI(Uri.parse(currenObiect.getImage()));

}else {

imgv.setImageResource(R.drawable.unknown);}return itemView;

}} // end myListAdapter

Înscrierea într-un nou fișierul XML datele:

XmlSerializer xmlSerializer = Xml.newSerializer();

// create an output stream FileOutputStream fileos = null; try { file.createNewFile(); fileos = new FileOutputStream(file); xmlSerializer.setOutput(fileos, "UTF-8"); //xmlSerializer.setOutput(writer); xmlSerializer.startDocument(null, Boolean.valueOf(true)); xmlSerializer.startTag("", "Obiecte"); for (Obiect it: myItem){ xmlSerializer.startTag("", "obiect"); xmlSerializer.startTag("", "title"); xmlSerializer.text(it.getNume()); xmlSerializer.endTag("", "title"); xmlSerializer.startTag("", "year");

xmlSerializer.text(Integer.toString(it.getAn())); xmlSerializer.endTag("", "year");

5

Page 6: paiip Lab 2

xmlSerializer.startTag("", "description"); xmlSerializer.text(it.getDescriere()); xmlSerializer.endTag("", "description"); xmlSerializer.startTag("", "image"); xmlSerializer.text(it.getImage()); xmlSerializer.endTag("", "image"); xmlSerializer.endTag("", "obiect"); } xmlSerializer.endTag("", "Obiecte"); xmlSerializer.endDocument(); xmlSerializer.flush(); fileos.close();

}

Structura elementelor din listview

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:padding="5dip" > <ImageView android:id="@+id/item_icon" android:contentDescription="@string/app_name" android:layout_width="60dip" android:layout_height="60dip" android:src="@drawable/unknown" />

<TextView android:id="@+id/item_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@+id/item_icon" android:layout_marginLeft="10dp" android:text="@string/sample" android:textSize="20sp" android:textStyle="bold" />

<TextView android:id="@+id/item_an" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="5dp" android:layout_alignBottom="@+id/item_icon" android:layout_alignLeft="@+id/item_name"

6

Page 7: paiip Lab 2

android:text="@string/sample" android:textColor="#343434" android:textSize="18sp" />

</RelativeLayout>

Rezultatele aplicației:

MainAcitivity: DetailsAcitivity

7

Page 8: paiip Lab 2

GestionareActivity

Concluzii:

Efectuân această lucrarea de laborator am înțeles metoda de citire – modificare – adăugare date noi întrun fișier xml. Mi-am aprofundat cunoștințele cu utilizarea listview și a arrayAdapter/List.

8