In questo esempio viene mostrato come utilizzare un SimpleAdapter con un layout custom. La activity mostrerĂ un elenco di paesi, e per ogni paese alcune informazioni aggiuntive come la superficie, la popolazione, il continente, la moneta. I dati verranno letti dal file strings.xml, metodo valido per un esempio; in un caso reale i dati verrebbero letti da un web service o da un database. Creare un nuovo progetto android chiamato HelloSimpleAdapter2 L'activity estende una ListActivity public class HelloSimpleAdapter2Activity extends ListActivity { Creare nel file strings.xml una serie di array con i dati da visualizzare <string-array name="paese"> <item>Italia</item> <item>Paesi Bassi</item> <item>Spagna</item> <item>Brasile</item> <item>Marocco</item> <item>Thailandia</item> </string-array> <string-array name="superficie"> <item>301.336</item> <item>41.526</item> <item>506.030</item> <item>8.514.876</item> <item>446.550</item> <item>514.000</item> </string-array> <string-array name="popolazione"> <item>60.702.858</item> <item>16.357.000</item> <item>47.025.000</item> <item>190.732.694</item> <item>33.757.750</item> <item>64.200.000</item> </string-array> <string-array name="continente"> <item>Europa</item> <item>Europa</item> <item>Europa</item> <item>America del Sud</item> <item>Africa</item> <item>Asia</item> </string-array> <string-array name="moneta"> <item>Euro</item> <item>Euro</item> <item>Euro</item> <item>Real brasiliano</item> <item>Dirham</item> <item>Baht</item> </string-array> Nella activity vengono letti gli array di stringe prima creati e viene creata una lista di mappe contenente i dati String[] paesi = getResources().getStringArray(R.array.paese); String[] superfici = getResources().getStringArray(R.array.superficie); String[] popolazioni = getResources().getStringArray(R.array.popolazione); String[] continenti = getResources().getStringArray(R.array.continente); String[] monete = getResources().getStringArray(R.array.moneta); List<Map<String,String>> dati = new ArrayList<Map<String,String>>(); for (int i = 0; i < paesi.length; i++) { Map<String,String> mappa = new HashMap<String,String>(); mappa.put("paese", paesi[i]); mappa.put("superficie", superfici[i]); mappa.put("popolazione", popolazioni[i]); mappa.put("continente", continenti[i]); mappa.put("moneta", monete[i]); dati.add(mappa); } Il layout main.xml viene modificato per rappresentare una singola riga di dati. <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <LinearLayout android:layout_height="wrap_content" android:id="@+id/linearLayout1" android:layout_width="match_parent"> <TextView android:layout_height="wrap_content" android:text="PAESE" android:textAppearance="?android:attr/textAppearanceLarge" android:id="@+id/textViewPaese" android:layout_width="match_parent" android:gravity="center"></TextView> </LinearLayout> <LinearLayout android:layout_height="wrap_content" android:id="@+id/linearLayout2" android:layout_width="match_parent"> <TextView android:layout_height="wrap_content" android:text="Superficie:" android:textAppearance="?android:attr/textAppearanceMedium" android:id="@+id/textViewLabelSuperficie" android:layout_width="130dip" android:gravity="right" android:layout_marginRight="10dip"></TextView> <TextView android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="SUPERFICIE" android:textAppearance="?android:attr/textAppearanceMedium" android:id="@+id/textViewSuperficie"></TextView> </LinearLayout> <LinearLayout android:layout_height="wrap_content" android:id="@+id/linearLayout2" android:layout_width="match_parent"> <TextView android:layout_height="wrap_content" android:text="Popolazione:" android:textAppearance="?android:attr/textAppearanceMedium" android:id="@+id/textViewLabelPopolazione" android:layout_width="130dip" android:gravity="right" android:layout_marginRight="10dip"></TextView> <TextView android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="POPOLAZIONE" android:textAppearance="?android:attr/textAppearanceMedium" android:id="@+id/textViewPopolazione"></TextView> </LinearLayout> <LinearLayout android:layout_height="wrap_content" android:id="@+id/linearLayout2" android:layout_width="match_parent"> <TextView android:layout_height="wrap_content" android:text="Continente:" android:textAppearance="?android:attr/textAppearanceMedium" android:id="@+id/textViewLabelContinente" android:layout_width="130dip" android:gravity="right" android:layout_marginRight="10dip"></TextView> <TextView android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="CONTINENTE" android:textAppearance="?android:attr/textAppearanceMedium" android:id="@+id/textViewContinente"></TextView> </LinearLayout> <LinearLayout android:layout_height="wrap_content" android:id="@+id/linearLayout2" android:layout_width="match_parent"> <TextView android:layout_height="wrap_content" android:text="Moneta:" android:textAppearance="?android:attr/textAppearanceMedium" android:id="@+id/textViewLabelMoneta" android:layout_width="130dip" android:gravity="right" android:layout_marginRight="10dip"></TextView> <TextView android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="MONETA" android:textAppearance="?android:attr/textAppearanceMedium" android:id="@+id/textViewMoneta"></TextView> </LinearLayout> </LinearLayout> E infine nella activity si agganciano i dati al layout con un SimpleAdapter ListAdapter adapter = new SimpleAdapter( this, dati, R.layout.main, new String[]{"paese","superficie","popolazione", "continente","moneta"}, new int[]{R.id.textViewPaese,R.id.textViewSuperficie, R.id.textViewPopolazione,R.id.textViewContinente, R.id.textViewMoneta} ); setListAdapter(adapter);
|
|||||||


