Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Introducción
Bienvenidos a la sección de programación Android, hoy voy a explicar cómo crear listas
personalizadas en Android. Las listas en Android son elementos que nos permiten
desplegar colecciones de información ordenadamente como un grupo de datos
relacionados, resultados y alguno que otro menú de interacción. La lista básica por
defecto en Android es como se muestra en la Figura 1.
Por otra parte las listas personalizadas nos permiten mostrar algo más que solo un texto,
estas listas permiten desplegar más información ya que un ítem de la lista se convierte en
una vista en XML a la que se le pueden agregar diferentes controles como parte de su
personalización, controles que a su misma vez pueden ser diferentes, un ejemplo se
muestra en la Figura 2.
TextView
ImageView
TextView
TextView
Elementos necesarios
Los elementos básicos que necesitamos para construir una lista personalizada son los
siguientes:
1. Una vista XML con todos los elementos de un ítem. Componentes base de un
ítem de la lista personalizada.
2. Clase que extienda (herede) de la clase BaseAdapter. Clase que nos ayudará a
construir la vista personalizada.
3. Clase de titular. Contiene las propiedades en base a un ítem.
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/listItems" />
En la parte de res/layout con el clic del proyecto agregamos un nuevo recurso de Layout a
través de New -> Layout resource file como se muestra en la Figura 3.
<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">
<LinearLayout android:id="@+id/thumbnail"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="3dip"
android:layout_alignParentLeft="true"
android:layout_marginRight="5dip">
<ImageView
android:id="@+id/imgItem"
android:layout_width="60dip"
android:paddingLeft="16dp"
android:layout_height="60dip"/>
</LinearLayout>
<TextView
android:id="@+id/txtTitle"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/thumbnail"
android:layout_toRightOf="@+id/thumbnail"
android:textColor="#009688"
android:text=""
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:paddingTop="5dp"
android:textSize="22dip"
android:fontFamily="sans-serif-condensed"
android:textStyle="normal"/>
android:id="@+id/txtDescription"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/txtTitle"
android:textColor="#546e7a"
android:text=""
android:textSize="17dip"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:fontFamily="sans-serif-thin"
android:textStyle="normal"
android:layout_marginTop="1dip"
android:layout_toRightOf="@+id/thumbnail" />
</RelativeLayout>
Ahora que tenemos la vista del ítem de la lista, procedemos a crear la clase titular a través
de una nueva clase de Java a la cual le pondremos como nombre TitularItems esta clase
nos ayudará para identificar los componentes dentro del código.
Figura 5. Creación de una nueva clase Java
El código queda de la siguiente manera:
public TitularItems(){}
this.title = _title;
this.description = _description;
this.img = _img;
}
Terminado esto agregamos otra clase que va actuar como el adaptador de los datos entre
la clase TitularItems y el archivo ítems.xml.
private Activity activity; //Activity desde el cual se hace referencia al llenado de la lista
// Constructor con parámetros que recibe la Acvity y los datos de los items.
super();
this.activity = activity;
@Override
return arrayItems.size();
@Override
return arrayItems.get(position);
@Override
return position;
}
/*
*/
TextView txtTitle;
TextView txtDescription;
ImageView img;
@Override
/*
*/
if(convertView==null)
view.img = (ImageView)convertView.findViewById(R.id.imgItem);
convertView.setTag(view);
else
view = (Fila)convertView.getTag();
}
// Se asigna el dato proveniente del objeto TitularItems
view.txtTitle.setText(itm.getTitle());
view.txtDescription.setText(itm.getDescription());
view.img.setImageResource(itm.getImg());
// Retornamos la vista
return convertView;
listaItems = (ListView)findViewById(R.id.listItems);
loadItems();
listaItems.setAdapter(Adaptador);
Como podemos ver en la Figura 6, las listas personalizadas nos ayudan a estilizar y a
presentar de una mejor manera la vista de los datos.