ListView personalizado

De WikiCode

Saltar a navegación, buscar
Delicious

Contenido

Objetivo

Lo normal es que nos encontremos con que necesitamos meter más de un dato en cada linea de nuestra linea, en este caso no nos sirve un adaptador de un solo dato como en ListView simple.

Ahora vamos a rellenar un listview con dos textos y una imagen. Para hacerlo vamos a implementar nuestro propio adaptador que vamos a definir basándonos en el BaseAdapter.

Archivos

ListView_Personalizado.java

package wikicode.es.ListView_Personalizado;
 
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
 
public class ListView_Personalizado extends Activity {
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
    	super.onCreate(savedInstanceState);
 
		setContentView(R.layout.main);
 
		ListView l = (ListView) findViewById(R.id.ListView01);
 
		l.setAdapter(new miAdapter(this));
    }
 
    private static class miAdapter extends BaseAdapter {
 
		private LayoutInflater mInflater;
 
		private static final String[][] data = {{"A","1"}, {"B","2"}, {"C","3"}, {"D","4"}, {"E","5"}};
 
		public miAdapter(Context context) {
 
			mInflater = LayoutInflater.from(context);
 
		}
 
		public View getView(int position, View convertView, ViewGroup parent) {
 
 
			TextView text;
 
			TextView text2;
 
			ImageView img1;
 
 
			if (convertView == null) {
 
				convertView = mInflater.inflate(R.layout.listview_fila, null);
 
			} 
 
			text = (TextView) convertView.findViewById(R.id.TextView01);
 
			text2 = (TextView) convertView.findViewById(R.id.TextView02);
 
			img1 = (ImageView) convertView.findViewById(R.id.ImageView01);
 
			text.setText(data[position][0]);
 
			text2.setText(data[position][1]);
 
			img1.setImageResource(R.drawable.icono);
 
 
			return convertView;
 
		}
 
 
		public int getCount() {
 
			return data.length;
 
		}
 
 
		public Object getItem(int position) {
 
			return position;
 
		}
 
 
		public long getItemId(int position) {
 
			return position;
 
		}
	}
}

main.xml

<?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"
    >
 
	<TextView  
	    android:layout_width="fill_parent" 
	    android:layout_height="wrap_content" 
	    android:text="WikiCode - ListView Personalizado" 
    />
 
    <ListView
    	android:id="@+id/ListView01" 
		android:layout_height="fill_parent"
 		android:layout_width="fill_parent"
    >
    </ListView>
</LinearLayout>

listview_fila.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
	xmlns:android="http://schemas.android.com/apk/res/android"
	android:layout_width="fill_parent"
	android:layout_height="fill_parent"
>
	<ImageView
		android:id="@+id/ImageView01" 
		android:layout_width="wrap_content"
		android:layout_height="wrap_content"
	>
 
	</ImageView>
 
	<TextView 
		android:id="@+id/TextView01" 
		android:layout_width="wrap_content"
		android:layout_height="wrap_content"
		android:layout_marginLeft="10px"
		android:textColor="#FFFF00"
	>
	</TextView>
 
	<TextView 
		android:id="@+id/TextView02"
		android:layout_width="wrap_content" 
		android:layout_height="wrap_content"
		android:layout_marginLeft="10px" 
		android:textColor="#0099CC"
	>
	</TextView>
</LinearLayout>

icono.png

Android icono.png

Imagen que cargaremos en cada una de nuestras filas. Debe estar correctamente cargada en las carpetas de recursos "res" "drawable".

Resultado

ListView Personalizado.png

¿Te ha sido útil este artículo?

12 Valoración: 9.3/10 (9 votos)

Herramientas personales
Espacios de nombres
Variantes
Acciones
Navegación
Otros idiomas
Categorías
support
Sitios
Herramientas