ExpandableListView con múltiples diseños

Me disculpo por mi inglés pero traducido con google. Necesito ayuda para mi aplicación, estoy usando un ExpandableListView con 3 diseños diferentes, pero estoy teniendo problemas que no he encontrado una respuesta en varios foros. Básicamente, si el método getChildView () comprueba si el convertView es nulo, desactiva todos los diseños o incluso los repito varias veces. Si no hago esa comprobación, verá el diseño como debería, pero los valores en el EditText borrados si hago clic en otro grupo o si desplaza la lista hasta no más para mostrar el diseño con el EditText. Espero que haya sido lo suficientemente claro y espero que las respuestas son igualmente claras, por desgracia he estado en Internet, pero no pude encontrar la respuesta que estaba buscando. Gracias de antemano a aquellos que me ayudarán

public View getChildView(int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { View view = convertView; ViewHolder holder; if (view == null) { holder = new ViewHolder(); if (groupPosition == 0) { convertView = infalInflater.inflate(R.layout.adv_item, null); holder.btn1 = (ImageButton) convertView .findViewById(R.id.button1); holder.btn2 = (ImageButton) convertView .findViewById(R.id.button2); holder.btn3 = (ImageButton) convertView .findViewById(R.id.button3); holder.et1 = (EditText) convertView.findViewById(R.id.editText1); holder.et2 = (EditText) convertView.findViewById(R.id.editText2); holder.et3 = (EditText) convertView.findViewById(R.id.editText3); holder.et4 = (EditText) convertView.findViewById(R.id.editText4); holder.et5 = (EditText) convertView.findViewById(R.id.editText5); holder.et6 = (EditText) convertView.findViewById(R.id.editText6); holder.check_sc1 = (CheckBox) convertView .findViewById(R.id.item_check_sc1); holder.check_sc2 = (CheckBox) convertView .findViewById(R.id.item_check_sc2); holder.check_sc3 = (CheckBox) convertView .findViewById(R.id.item_check_sc3); holder.check_oo = (CheckBox) convertView .findViewById(R.id.item_check_oo); convertView.setTag(holder); } if (groupPosition == 1) { convertView = infalInflater.inflate(R.layout.visual_item, null); } if (groupPosition == 2) { convertView = infalInflater.inflate(R.layout.routes_item, null); } } else { holder = (ViewHolder) convertView.getTag(); } return convertView; } 

En este momento su lista no "sabe" que tiene tres tipos diferentes de registros. Usted necesita "decirle" que al anular la siguiente función del adaptador:

 @Override public int getViewTypeCount() { return 3; // <-- Here goes your view types count } 

También necesita anular la función del adaptador para averiguar qué tipo de vista utilizar:

 @Override public int getItemViewType(int position) { return getItemViewType(position); // <-- Here must be your logic to get the type of the item } 

Así que ahora Android tiene una piscina de tres tipos de elementos de lista que puede utilizar. Y ahora usted no necesita 'si (groupPosition == 2)' (y etc) porque un ListView utilizará esas funciones para calcular el diseño correcto para pasar a la función 'getView ()' del adaptador. Lo anterior es cierto para ListAdapters simple .

En cuanto a ExpandableAdapters tienen funciones similares:

 public int getGroupTypeCount () public int getGroupType (int groupPosition) public int getChildType (int groupPosition, int childPosition) public int getChildTypeCount () 

Debe anular todos ellos, o algunos de ellos, dependiendo de si utiliza diferentes diseños para grupos o no. En cuanto a su caso, sugiero probar algo como:

 @Override public int getChildTypeCount () { return 3; <-- you have three types of views } @Override public int getChildType (int groupPosition, int childPosition) { /* * In case of group 1 this function returns 1, * in case of group 2 it returns 2, and so on. */ return groupPosition; } 
  • Deslice el efecto hacia abajo en ExpandableListView
  • Mostrar sólo un hijo de la lista ampliable a la vez
  • Cómo crear archivos estáticos (sólo con archivos xml) ExpandableListView en Android
  • Establecer bordes para un elemento de grupo expandido mediante ExpandableListView
  • ¿Cómo implementar el cajón de navegación androide expandible con subitems?
  • ¿Cómo agregar la imagen en lista extensible en padre en androide?
  • CheckBox indica en los hijos de ExpandableListView
  • Creación de un RecyclerView ampliable
  • Implementar ListView expandible con adaptador personalizado
  • Después de mantener el estado de colapso / expansión para nivel N o Multinivel lista ampliable algunos subgrupos no se muestran
  • Elementos en niveles múltiples ExpandableListView no siempre se puede hacer clic
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.