paiip lab 2
DESCRIPTION
paiip lab2 androidTRANSCRIPT
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.
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
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
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
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
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
android:text="@string/sample" android:textColor="#343434" android:textSize="18sp" />
</RelativeLayout>
Rezultatele aplicației:
MainAcitivity: DetailsAcitivity
7
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