Android ExpandableListView – Buscando un tutorial
Estoy tratando de programar una interfaz de Android que utiliza una lista expandible en el lado y un fragmento en el otro lado para que pueda cargar diferentes recursos haciendo clic en los hijos de la lista ampliable. Pero por desgracia no puedo encontrar buenos tutoriales sobre esta lista en cualquier lugar. Sí, he buscado en las demostraciones de API y he hecho una lista normal con un BaseExpandableListAdapter, pero aún así, entender la lista de bien es un poco difícil sin un buen tutorial, ¿tienes alguna buena o información que podría comprobar?
- Agregando un niño en un GestureOverlayView en el punto donde toqué en android?
- Cómo identificar una vista en el diseño?
- El vídeo no se reproduce correctamente en el listview de android
- Android: Obtener una vista Referencia a un elemento de menú
- Textview dentro de RelativeLayout en la vista personalizada ¿No se aplica la gravedad correctamente?
- Ciclo de vida de Android View
- Cómo crear un ImageView que llena la altura de los padres y muestra una imagen lo más grande posible?
- Cómo reproducir video en VideoView dentro de ViewPager desde el servidor
- Android creando cadena de animación ViewPropertyAnimator
- Manejar url desde la vista web onCreateWindow
- Android: EfficientAdapter con dos vistas diferentes
- Llamar setHasOptionsMenu (true) de un fragmento da como resultado múltiples llamadas a onCreateOptionsMenu en Activity
- Android: Maneja el botón Atrás de la vista personalizada
Puede encontrar un ejemplo de trabajo de la vista de lista expandible mediante los siguientes enlaces:
-
ExpandableListView
-
Expandable ListView en ANDROID
-
Android Expandable ListView simple Ejemplo en android.
Para hacer clic en el niño, puede manejar de esta manera.
getExpandableListView().setOnChildClickListener(new OnChildClickListener() { public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) { // your code... } });
Espero que esto te ayudará. Gracias..
Crear lista de artículos
List<ParentItem> itemList = new ArrayList<ParentItem>(); ParentItem parent1 = new ParentItem(); parent1.getChildItemList().add(new ChildItem()); parent1.getChildItemList().add(new ChildItem()); parent1.getChildItemList().add(new ChildItem()); ParentItem parent2 = new ParentItem(); parent2.getChildItemList().add(new ChildItem()); parent2.getChildItemList().add(new ChildItem()); parent2.getChildItemList().add(new ChildItem()); itemList.add(parent1); itemList.add(parent2); ExpandableListViewAdapter adapter = new ExpandableListViewAdapter(context, itemList);
Objetos de datos
public class ParentItem { private List<ChildItem> childItemList; public ParentItem() { childItemList = new ArrayList<ChildItem>(); } public List<ChildItem> getChildItemList() { return childItemList; } } public class ChildItem { // filll with your data }
Adaptador
public class ExpandableListViewAdapter extends BaseExpandableListAdapter { private static final class ViewHolder { TextView textLabel; } private final List<ParentItem> itemList; private final LayoutInflater inflater; public ExpandableListViewAdapter(Context context, List<ParentItem> itemList) { this.inflater = LayoutInflater.from(context); this.itemList = itemList; } @Override public ChildItem getChild(int groupPosition, int childPosition) { return itemList.get(groupPosition).getChildItemList().get(childPosition); } @Override public long getChildId(int groupPosition, int childPosition) { return childPosition; } @Override public int getChildrenCount(int groupPosition) { return itemList.get(groupPosition).getChildItemList().size(); } @Override public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, final ViewGroup parent) { View resultView = convertView; ViewHolder holder; if (resultView == null) { resultView = inflater.inflate(android.R.layout.test_list_item, null); //TODO change layout id holder = new ViewHolder(); holder.textLabel = (TextView) resultView.findViewById(android.R.id.title); //TODO change view id resultView.setTag(holder); } else { holder = (ViewHolder) resultView.getTag(); } final ChildItem item = getChild(groupPosition, childPosition); holder.textLabel.setText(item.toString()); return resultView; } @Override public ParentItem getGroup(int groupPosition) { return itemList.get(groupPosition); } @Override public int getGroupCount() { return itemList.size(); } @Override public long getGroupId(final int groupPosition) { return groupPosition; } @Override public View getGroupView(int groupPosition, boolean isExpanded, View theConvertView, ViewGroup parent) { View resultView = theConvertView; ViewHolder holder; if (resultView == null) { resultView = inflater.inflate(android.R.layout.test_list_item, null); //TODO change layout id holder = new ViewHolder(); holder.textLabel = (TextView) resultView.findViewById(android.R.id.title); //TODO change view id resultView.setTag(holder); } else { holder = (ViewHolder) resultView.getTag(); } final ParentItem item = getGroup(groupPosition); holder.textLabel.setText(item.toString()); return resultView; } @Override public boolean hasStableIds() { return true; } @Override public boolean isChildSelectable(int groupPosition, int childPosition) { return true; } }
Te dio
============================== +Parent 1 ============================== -child 1.1 ============================== -child 1.2 ============================== -child 1.3 ============================== +Parent 2 ============================== -child 2.1 ============================== -child 2.2 ============================== -child 2.3 ==============================
De esta manera puede manejar eventos:
getExpandableListView().setOnChildClickListener(new OnChildClickListener() { public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) { // your code... } }
- Cómo configurar múltiples alarmas usando el administrador de alarmas de android
- Android AudioRecord ejemplo