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 ().

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

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

  • Cómo usar una misma fontface personalizada para toda la vista en android?
  • ¿Cómo obtener el lienzo actual?
  • Vista web de Android en la mitad de la pantalla
  • ¿Hay una forma de compensar una vista desde el centro en Android?
  • ¿Puedo ejecutar JavaScript sin un WebView, o un WebView puede ejecutarse sin un contexto de actividad, como en un servicio?
  • ¿Cómo se basan las coordenadas de un Android onTouchEvent MotionEvent?
  • Vista dinámica con desplazamiento horizontal y vertical
  • ¿Existe un reemplazo para el widget Galería con Reciclado de vistas?
  • Cómo centrar un textview dentro de un linearlayout
  • Android Webview goback () problema con el método loadDataWithBaseURL
  • ¿Creación de una copia de una vista?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.