Cómo obtener la vista del grupo en la lista expandiblelist en android?
im blazilian así que, mi inglés no es bueno.
Así que .. necesito obtener una vista del grupo en expandiblelistview para obtener su etiqueta de objeto a través del método view.getTag ().
- Error de WebView. Haciendo una aplicación para Android para ver mi sitio web
- Ampliación de la clase de Android View para agregar un dropshadow
- Android, Vista lista expandible no tiene reacción al clic !!! No se expande
- Android ExpandableListView y onChildClick no funciona
- View.setEnabled (false) no funciona muy bien en android
sígueme en este ejemplo:
ExpandableListView --> group (i need this view) ----> child ----> child ----> child --> group (i need this view) ----> child ----> child
Mi código:
@Override public boolean onChildClick(final ExpandableListView parent, final View v, final int groupPosition, final int childPosition, final long id) { /* I NEED GET VIEW OF GROUP FOR GET YOUR TAG*/ View vParent = parent.getChildAt(groupPosition); // dont work after first group Programa v2 = (Programa) parent.getTag(); // return null // v parameter is a child of group return true; }
en mi adaptador:
@Override public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { TwoLineListItem view = (TwoLineListItem) LayoutInflater.from(contexto) .inflate(android.R.layout.simple_expandable_list_item_2, parent, false); String programa = map.keySet().toArray(new String[map.keySet().size()])[groupPosition]; view.getText1().setText(programa); view.getText2().setText("PROGRAMA LOCAL"); view.setTag(programas.get(groupPosition)); // i need get this in child click listener return convertView = view; }
¿alguna idea? Gracias
- ¿Está declarando una clase interna en una vista peligrosa?
- Surface - dequeueBuffer failed (Error desconocido 2147483646)
- Android XML: Centrando una vista en el diseño relativo- android: layout_centerHorizontal = "true" no funciona?
- ExpandableListView Group View Expand Predeterminado
- Android: EfficientAdapter con dos vistas diferentes
- Color del enlace de Android WebView
- Webview con inicio de sesión de Windows parpadeando en el cuadro de diálogo
- Cómo obtener la vista en la lista de vista ampliable en mi caso no muestran la lista ampliable que muestra en blanco
Si su código es correcto, desea obtener la vista de grupo para el niño para que pueda llamar a getTag () en él, ¿correcto?
Si es así, ¿por qué no saltar ese paso y acceder al valor de la etiqueta, establecido por programas.get(groupPosition)
manualmente?
Puede hacerlo llamando a:
programas.get(groupPosition)
justo en la parte superior de su método onChildClick
ya que obtiene el valor de posición de grupo allí también.
Editar en respuesta a su comentario:
El problema aquí es que no vas a ser capaz de obtener la vista del grupo a través del adaptador, ya que podría implicar la recreación de la vista debido al reciclado de las vistas en las listas. Si este método no funciona, le recomiendo que modifique su código para que funcione.
Si programas
es una de las entradas de su adaptador, a continuación, llame a getGroup(groupPosition)
en su adaptador para acceder a él. De lo contrario, haga un método público en su clase de adaptador para permitir la recuperación de ese valor.
Para obtener la vista de grupo desde un ExpandableListView, haga algo de la siguiente manera:
public View getGroupView(ExpandableListView listView, int groupPosition) { long packedPosition = ExpandableListView.getPackedPositionForGroup(groupPosition); int flatPosition = listView.getFlatListPosition(groupPosition); int first = listView.getFirstVisbileView(); return listView.getChildAt(flatPosition - first); }
Intenté la respuesta de AedonEtLIRA pero solamente obtuvo el primer artículo en la lista.
Mi solución fue establecer una etiqueta en el método getGroupView de mi adaptador.
@Override public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { if (convertView == null) { LayoutInflater layoutInflater = (LayoutInflater) this.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); convertView = layoutInflater.inflate(R.layout.listitem_group, null); } //This is your data object that you might be using for storage that can be returned by your getGroup(groupPosition) function GroupDataDto groupDataDto = (GroupDataDto) getGroup(groupPosition); String name = groupDataDto.getName(); convertView.setTag(name); ...
Ahora en su Fragmento / Actividad, en su onGroupExpand y onGroupCollapse:
GroupDataDto groupDataDto = (GroupDataDto) listAdapter.getGroup(groupPosition); ImageView arrow = (ImageView) getView().findViewWithTag(groupDataDto.getName()).findViewById(R.id.expandable_arrow_down);
Entonces puedo hacer mi animación en la flecha, por lo que quería obtener esa vista de grupo.
Bueno, he utilizado el siguiente código para acceder a un TextView en un grupo:
@Override public boolean onChildClick(final ExpandableListView parent, final View v, final int groupPosition, final int childPosition, final long id) { View vParent = mAdapter.getGroupView(groupPosition, true, null, null); Programa v2 = (Programa) vParent.getTag(); return true;
}
Espero que ayude