La finalidad de este tutorial es poder mostrar en un Activity una lista con las celdas personalizadas .
Puntos importantes :
1. La activity que gestiona los eventos y su layout.xml (tipo de layout que se desea y dentro un listView)
2. La lista (arrayList) que se mostrará en un ListView
3. Una clase Item que es el objeto que corresponde a cada celda de ListView
4 Un Item_Layout , un layout para el item, aqui se define el diseño de cada celda de ListView.
5. Una clase.java (adapter) para adaptar la "lista" (que es un array list de toda la vida) a la listView
--------------------------------------------------------------------------------------------------------
Dicho esto, ya podemos empezar !
1. Crear el Activity (.java) con su vista (.xml) y declararlo en "AndroidManifest.xml"
2.1. Declaramos el objeto "listaView" dentro de la clase ListaCompras, y lo inicalizamos en el metodo "onCreate" de lamisma clase:
2.2. En este ejemplo creamos una simple lista de ejemplo, pero en una App comercial los datos se pueden recuperar de sqlite o un archivo XML.
3. En este caso creamos una case propia "Mi_Item.java" para poder guardar objetos como "un libro" con sus atributos: nombre, autor, precio, nº de edicion etc. Esto en un futuro podremos reciclar el codigo con coco esfuerzo. En caso que solo quieres una lista simpre se puede utilizar el tipo de "Item" o "celda" predeterminada por android "android.R.layout.simple_list_item_1". http://developer.android.com/guide/topics/ui/layout/listview.html
Se omiten los getters y setters, tienes que ponerlos! |
resumen del punto 3: esta clase "mi_item" es solo un objeto que se mostrará en cada celda de la lista.
4. Creamos la vista personalizada de cada celda (es un layout de toda la vida solo que se repetirá , se puede incluir incluso fragments y dentro más vistas y vistas y botones y spinners y todo lo que quieras xd )
New>Others>Android XML layout |
res / layout / mi_item.xml |
5. Creamos el adaptador (una clase.java) extendida de BaseAdapter para poder adaptar la lista de Strings a una ListView:
creamos la clase "Mi_ItemsAdapter.java" extendida de Base Adapter y con los metodos obligatorios que los requiere la clase padre .
Creamos el constructor y los atributos "context" y "items" :
Los Getters and Setters son obligatorios !!! |
Sobreescribimos los metodos :
@Override
public int getCount() {
return items.size();
}
@Override
public Object getItem(int posicion) {
return items.get(posicion);
}
@Override
public long getItemId(int position) {
return position; //este metodo no lo entiendo
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View rowView = convertView;
if (convertView == null) {
// Create a new view into the list.
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
//para cada fila infla este tipo de item
rowView = inflater.inflate(R.layout.mi_item, parent, false);
}
// Set data into the view.
TextView textoIzquierda = (TextView) rowView.findViewById(R.id.textViewIzquierda);
TextView textoCentral = (TextView) rowView.findViewById(R.id.textViewCentral);
//CheckBox cb= (CheckBox) rowView.findViewById(R.id.checkBoxDerecha);
Mi_Item itemSeleccionado = this.items.get(position);
textoIzquierda.setText(itemSeleccionado.getCantidad());
textoCentral.setText(itemSeleccionado.getDescripcion());
//cb.setSelected(false);
return rowView;
}
// + getters and setters....
Solo queda asignarle este adaptador al ListView de la clase ListaCompras.java y agregar un escuchador del listView
ListaCompras.java |
Si todo a salido bien .. y con un par de modificaciones en el diseño de la vista, obtenemos este resultado :
![]() |
Captura de pantalla |
Y listo ! solo queda ejecutar el programa... por si lees esto y estas perdido... se omite la creacion de proyecto y de la clase principal "MainActivity.java". Si no se entiende el tutorial contacte con https://www.facebook.com/ionut.vladasel
No hay comentarios:
Publicar un comentario