Sunteți pe pagina 1din 8

Ministerul Educaiei al Republicii Moldova

Universitatea Tehnic a Moldovei


Facultatea Calculatoare, Informatic i Microelectronic

Raport
Lucrarea de laborator nr. 2
Programarea Aplicaiilor Incorporate i Independente de Platform

Tema: Elaborarea unei aplicaii cu XML

A efectuat:

St. gr. TI-114 Vasilachi Igor

A verificat:

Antohi I.

Chiinu 2013

Sarcina lucrrii:
Elaborarea unei aplicaii ce va efectua urmtoarele operaii asupra fiierului XML:
Citirea datelor
Editarea datelor
Adaugarea date noi
Sortare/Cutare
Realizarea lucrrii:
Pentru realizarea acestei lucrri de laborator vom crea un proiect nou n Eclipse vom
specifica parametrii pentru aplicaia dat dup ce proiectul a fost creat creem un dosar n mapa res a
proiectului cu denumirea XML n acest dosar vom plasa fiierul XML care va conine careva date
prestabilite. Acum vom crea structura fiierului 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;

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 fiierul custom.xml i am adugat careva date n el vom trece la etapa
citirii acestuia i anume vom folosi metoda XmlPullParse.
Citirea datelor din fiierul custom.xml prestabilit:
Vom citi datele din fiierul xml i le vom aduga 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;
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 fiier nou
cu denumirea myxml.xml acesta a fost creat ca variabil global i n funcia dat se apeleaz ctre
acest fiier pentru nscrierea datelor, aceste date sunt luate din myItem care este o list n care se
salveaz toate datele.

Afiarea datelor n listview


private class myListAdapter extends ArrayAdapter<Obiect>{
public myListAdapter(){
super(MainActivity.this, R.layout.row, myItem);
}
@Override
public 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 title
TextView nameText = (TextView)itemView.findViewById(R.id.item_name);
nameText.setText(currenObiect.getNume());

//Get item year


TextView year = (TextView)itemView.findViewById(R.id.item_an);
year.setText(""+currenObiect.getAn());
//Get item image
ImageView 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 fiierul 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");
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"
android:text="@string/sample"
android:textColor="#343434"
android:textSize="18sp" />
</RelativeLayout>

Rezultatele aplicaiei:
MainAcitivity:

DetailsAcitivity

GestionareActivity

Concluzii:
Efectun aceast lucrarea de laborator am neles metoda de citire modificare adugare
date noi ntrun fiier xml. Mi-am aprofundat cunotinele cu utilizarea listview i a
arrayAdapter/List.