viernes, 9 de junio de 2017

Tutorial
Trabajando con un Adaptador en Android

Introducción:
Dentro de Android tenemos un objeto llamado Adapter. Un adaptador se define como el puente entre los datos y la vista. El adaptador se encarga de tomar la vista y repetirla para cada colección de datos además de interactuar con los elementos que componen la vista.
Un claro ejemplo de donde podemos usar un adaptador, es cuando tenemos una colección de datos y la queremos mostrar como una lista de ítems en una activity. Pues bien es el adaptador, quienes nos ayuda a mostrar la colección en los ítems.

La colección de datos:
Antes de crear el adaptador, necesitamos saber que vamos a mostrar. En este caso vamos a trabajar con una lista de comentarios. Por tanto, necesitamos una clase que represente la información que manejamos.

La clase Comentario:

public class Comentario {
private String nombre, tema, comentario, fecha;
public Comentario(String nombre, String tema, String comentario, String fecha){
this.nombre = nombre;
this.tema = tema;
this.comentario = comentario;
this.fecha = fecha;
}
public String getFecha() {
return fecha;
}
public void setFecha(String fecha) {
this.fecha = fecha;
}
public void setNombre(String nombre){
this.nombre = nombre;
}
public void setTema(String tema){
this.tema = tema;
}
public void setComentario(String comentario){
this.comentario = comentario;
}
public String getNombre(){
return this.nombre;
}
public String getTema() {
return this.tema;
}
public String getComentario() {
return this.comentario
}
}

Ya tenemos nuestra clase, que manejara objetos tipo “Comentario”. Y es que como se verá más adelante, al adaptador le pasaremos un array de comentarios, que es lo que queremos mostrar en la lista de items.

Creando la vista:
Lo siguiente ahora es, necesitamos dos elementos para mostrar la colección. El primero es definir el item, que va ser un layout. Este layout tendrá lo que necesitemos para mostrar un objeto de nuestra colección, en nuestro caso tendrá lo necesario para mostrar un objeto de tipo comentario. Por supuesto podemos mostrar lo que queramos de dicho objeto. Una vez que tengamos hecho el “item”, lo siguiente es definir la activity en la que vamos a mostrar una lista de esos items. Lo podemos hacer, creando dentro de nuestra activity un ListView, o un GridView, o también un RecyclerView. Con estos dos elementos, ya tenemos listo lo necesario para mostrar nuestra lista de comentarios. Lo que nos queda es crear el adaptador, y hacer ese puente entre los datos y la vista.

Creando el adaptador:
El Adaptador tendrá dos elementos muy importantes. La primera es la lista de items. Estos items son de tipo “Comentario”. Y el otro elemento es, el referenciado a los distintos campos o objetos que tiene un item. Puesto que el adaptador va a “rellenar” cada item con la información, de los comentarios. A continuación, la clase que implementa un adaptador.

private class ComentarioAdapter extends RecyclerView.Adapter<ComentarioAdapter.ComentarioViewHolder> {
private List<Comentario> items;
private Context context;
public class ComentarioViewHolder extends RecyclerView.ViewHolder {
// Campos respectivos de un item
public TextView nombre, tema, comentario, fecha;
public ComentarioViewHolder(View v) {
super(v);
nombre = (TextView) v.findViewById(R.id.nombreText);
tema = (TextView) v.findViewById(R.id.temaText);
comentario = (TextView) v.findViewById(R.id.comentarioText);
fecha = (TextView) v.findViewById(R.id.fechaText);
}
}
public ComentarioAdapter(List<Comentario> items, Context context) {
this.items = items;
this.context = context;
}
@Override
public int getItemCount() {
return items.size();
}
@Override
public ComentarioViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View v = LayoutInflater.from(context).inflate(R.layout.item, viewGroup, false);
return new ComentarioViewHolder(v);
}
@Override
public void onBindViewHolder(ComentarioViewHolder viewHolder, int i) {
viewHolder.nombre.setText(items.get(i).getNombre());
viewHolder.tema.setText(items.get(i).getTema());
viewHolder.comentario.setText(items.get(i).getComentario());
viewHolder.fecha.setText(items.get(i).getFecha());
}
}

Como se ha dicho antes, primero tenemos la lista de Comentarios, y el contexto. Por qué el adaptador necesita saber en qué activity estamos. ViewHolder Permite referenciar los elementos que componen un item, en nuestro ejemplo tenemos 4 TextView. En el constructor de la clase le pasaremos la lista de comentarios y el contexto.
El método getItemCount(), devuelve el tamaño de la lista. El siguiente método, se trata de “inflar” nuestra activity con los items. Es decir, en nuestra activity tenemos una lista de items. Pues bien, esos items van a ser el “layout item”, que hemos creado precisamente para cada item. De esta forma, nuestra activity tendrá en cada item, ese layout. Y por último mediante el ViewHolder vamos a establecer el texto a los TextView de cada item. De manera que se recorre toda la lista de Comentarios, y se va creando cada item. No es para nada complicado. Solo que como en todo, la primera vez, cuesta un poco entender las cosas. Con el adaptador implementado, ya estamos al 95%. Puesto que, ya nos queda solo hacer uso de
todo lo que llevamos hecho.

Usando el adaptador:
Nos situamos en el fichero java que haga referencia a la activity, donde vamos a mostrar la lista de items. Primero necesitamos información que mostrar, en este ejemplo, son los comentarios. Por tanto, vamos a crear varios comentarios. Para esto, hacemos uso de nuestra clase que hemos hecho para guardar comentarios.

private ArrayList<Comentario> comentarios;
comentarios.add(new Comentario(“nombre”, “tema,” “comentario”,”fecha”));

Ahora creamos el objeto Adaptador:

private ComentarioAdapter adapter;
adapter = new ComentarioAdapter(comentarios,getApplicationContext());

Ya solo falta, pasarle a la lista de la activity, el adaptador. Recordando, esta lista puede ser por ejemplo un RecyclerView.

private RecyclerView lista;
lista = (RecyclerView) findViewById(R.id.listaItems);
lista.setAdapter(adapter);


Pues, ya está, así de sencillo es el uso de un adaptador. Con un adaptador podemos personalizar el contenido que queramos en los items de una lista. Es una forma ordenada y muy práctica de poder hacer eso. Como siempre donde hay más información detallada es en la documentación oficial de Android. Donde se explica todos los elementos de la clase Adaptador.

No hay comentarios:

Publicar un comentario

Tutorial Trabajando con un Adaptador en Android Introducción: Dentro de Android tenemos un objeto llamado Adapter. Un adaptador se de...