Esempio estensione SimpleAdapter

Utilizzando come base di parenza l'esempio Esempio SimpleAdapter con layout custom verra' creato un layout che contiene un'immagine.

 

Creare un nuovo progetto android chiamato HelloSimpleAdapter3 utilizzando come base il progetto Esempio SimpleAdapter con layout custom

 

Copiare nella cartella res/drawable le icone delle bandiere contenute nell'archivio bandiere.zip

 

Aggiungere al file strings.xml un array contenente i nomi dei file senza l'estensione .png

    <string-array name="bandiere">
    	<item>bandiera_italia</item>
    	<item>bandiera_paesi_bassi</item>
    	<item>bandiera_spagna</item>
    	<item>bandiera_brasile</item>
    	<item>bandiera_marocco</item>
    	<item>bandiera_thailandia</item>
    </string-array>

 

Modificare l'activity in modo da caricare nella lista di mappe anche il nome della bandiera

	String[] bandiere = getResources().getStringArray(R.array.bandiere);
	for (int i = 0; i < paesi.length; i++) {
		...
		...
		mappa.put("bandiera", bandiere[i]);
	}

 

Modificare il layout main.xml aggiungendo un componente ImageView che conterra' l'immagine della bandiera

	<LinearLayout android:layout_height="wrap_content"
		android:id="@+id/linearLayout1" android:layout_width="match_parent">
		<ImageView android:layout_height="wrap_content" 
			android:id="@+id/imageViewBandiera" android:src="@drawable/icon" 
			android:layout_width="wrap_content"></ImageView>
		<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>

 

Ridefinire il metodo getView() dell'adapter in modo da caricare l'immagine

        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}
        ){
        	@Override
        	public View getView(int position, View convertView, ViewGroup parent) {
        		View  view = super.getView(position, convertView, parent);
        		ImageView bandiera = (ImageView)view.findViewById(R.id.imageViewBandiera);
        		Map<String,String> data = (Map<String,String>)getItem(position);
        		bandiera.setImageResource(
        				getResources()
        					.getIdentifier(
        							data.get("bandiera"), 
        							"drawable", 
        							getPackageName()
        						)
        					);
        		return view;
        	}
        };




AttachmentSize
bandiere.zip6.49 KB
HelloSimpleAdapter3.zip71.97 KB