Los Adapter en Android son estas clases especiales se usan como vinculos para las vistas, proveyendo un acceso a la informacion, en palabras simples "este tipo le dice que poner a las vistas"..... existen toda clase de Adapter en Android:
ArrrayAdapter
CursorAdapter
ListAdapter
SimpleCursorAdapter
Mas Info en
esta.... URLAhora los que nos compete es hablar sobre como crear nuestra propia clase CustomExpandableListAdater que tenga como parametro un HashMap
> y que cree los grupos e hijos a partir de esto...
Lo primero es crear nuestra clase que herede de BaseExpandableListAdapter y colocarle nuestros objetos miembros y un constructor que reciba como parametro el contexto y el hashmap se vera asi:
Hasta ahi se ve bien pero como heredamos de BaseExpandableListAdapter tenemos que implementar los siguientes metodos abstractos:
getChild(int groupPosition, int childPosition)
getChildId(int groupPosition, int childPosition)
getChildView(int groupPosition, int childPosition, boolean isLastChild,
View convertView,
ViewGroup parent)
getChildrenCount(int groupPosition)
getGroup(int groupPosition)
getGroupCount()
getGroupId(int groupPosition)
getGroupView(int groupPosition, boolean isExpanded,
View convertView,
ViewGroup parent)
hasStableIds()
isChildSelectable(int groupPosition, int childPosition)
Todos de la interface
android.widget.ExpandableListAdapter.
Para la implementacion de ellos lo veremos por orden:
El ultimo metodo
getMapGroup(int position) , es un metodo muy util que nos permite obtener a partir de una posicion en el grupo el grupo asociado, dado que es un Objeto de tipo Map entonces tiene asociado valores y no posiciones asi que este traduce la posicion en un valor en el HashMap.
Luego sobreescribimos el metodo
getChild(int groupPosition, int childPosition), y a partir de la posicion obtenemos el grupo con el
getMapGroup(int position) asi con el grupo obtenemos la lista y con la posicion de la lista el objeto asociado:
T value=mapList.get(getMapGroup(groupPosition)).get(childPosition);
Lo almacenamos en value y lo devolvemos.
Ahora este metodo que fue sacado de el
ejemplo de ExpandableListView1.java de
android developers:
Lo que hace es crear el view ha desplegarse en nuestro ExpandableListView al que el adapter va estar asociado. Por lo tanto como queremos que sean Textview entonces se crea con su respectivo layout. Este metodo es usado al momento de crear las vistas:
Ya lo ven se llama genericView para crear las vistas.
Luego algunos metodos que son bastantes compresibles sin extensa explicacion, simplemente con la declaracion podemos darnos cuenta:
Al final solo sobreescribimos estos metodos para especificar si los objetos tienen Ids y si son seleccionables los childs deacuerdo a la posicion
Y eso es todo ahora para que nuestro adapter se ajusta a nuestra lista simplemente
Hasta la proxima