L'oggetto utilizzato per la lettura del xml in questo esempio è XmlResourceParser e il record utilizza attributi del xml per la memorizzazione dei dati.
Ovviamente si può cambiare l'ordinamento per prezzo o autore.
Di seguito il file xml e il metodo che ritorna la lista di libri.
<?xml version="1.0" encoding="UTF-8"?> <resources> <book name="First book" author="E.P." price="9.5"/> <book name="Second book" author="A.D." price="12.80"/> <book name="Third book" author="F.R." price="14"/> </resources>
private final static String NAME = "name"; private final static String AUTHOR = "author"; private final static String PRICE = "price"; //... private List<? extends Map<String,?>> createList() { ArrayList<Map<String,String>> lista = new ArrayList<Map<String,String>>(); //books.xml ad esempio è il file nella directory res/xml del progetto XmlResourceParser xrp = getResources().getXml(R.xml.books); String author = ""; String price = ""; String name =""; try{ xrp.next(); int eventType = xrp.getEventType(); while (eventType != XmlResourceParser.END_DOCUMENT) { if(eventType == XmlPullParser.START_TAG) { String strBook = xrp.getName(); if (strBook.equals("book")) { name = xrp.getAttributeValue(null, "name"); author = xrp.getAttributeValue(null, "author"); price = xrp.getAttributeValue(null, "price"); Map<String,String> data = new HashMap<String,String>(); data.put(NAME,name); data.put(AUTHOR,author); data.put(PRICE,price); lista.add(data); } } eventType = xrp.next(); } } catch (XmlPullParserException e) { } catch (IOException e) { } finally { xrp.close(); } //Ordinamento per nome Collections.sort(lista, sDisplayNameComparator); return lista; } private final static Comparator<Map> sDisplayNameComparator = new Comparator<Map>() { private final Collator collator = Collator.getInstance(); public int compare(Map map1, Map map2) { return collator.compare(map1.get(NAME), map2.get(NAME)); } };