Acceso a TextView de viewview de groupview desde getChildView () de ExpandableListView

Estoy intentando tener acceso a un textview de GroupView que demuestra la cuenta de la caja de cheque seleccionada en ChildView. Introduzca aquí la descripción de la imagen

Por ejemplo, – Norte es el GroupView, y la lista a continuación con la casilla de verificación es ChildView. Quiero actualizar la cuenta (18) con cada clic en la casilla de verificación. He aplicado OnClickListner en la casilla de verificación. Tengo ExpanadableListViewAdapter personalizado extiende BaseExpandableListAdapter.

Aquí está mi fragmento de código –

@Override public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { if (convertView == null) { convertView = LayoutInflater.from(parent.getContext()).inflate(R.layout.filter_expandable_list_group, parent, false); groupViewHolder = new GroupViewHolder(); groupViewHolder.GroupName = (TextView) convertView.findViewById(R.id.group_name); groupViewHolder.GroupCount = (TextView) convertView.findViewById(R.id.group_count); groupViewHolder.rightArrow = (ImageView) convertView.findViewById(R.id.right_arrow); convertView.setTag(groupViewHolder); }else{ groupViewHolder = (GroupViewHolder) convertView.getTag(); } groupViewHolder.GroupName.setText(((OutletListData) getGroup(groupPosition)).getName()); groupViewHolder.GroupCount.setText(""+((OutletListData) getGroup(groupPosition)).getOutletDatas().size()); return convertView; } @Override public View getChildView(final int groupPosition, final int childPosition, boolean isLastChild, View convertView, final ViewGroup parent) { if (convertView == null) { convertView = LayoutInflater.from(parent.getContext()).inflate(R.layout.filter_expandable_list_child, parent, false); childViewHolder = new ChildViewHolder(); childViewHolder.childTextView = (TextView) convertView.findViewById(R.id.text1); childViewHolder.childCheckBox = (CheckBox) convertView.findViewById(R.id.checkbox); convertView.setTag(childViewHolder); }else{ childViewHolder = (ChildViewHolder) convertView.getTag(); } childViewHolder.childTextView.setText(((OutletData) getChild(groupPosition, childPosition)).getDealerName()); childViewHolder.childCheckBox.setChecked(((OutletData) getChild(groupPosition, childPosition)).getSelected() == "1"); childViewHolder.childCheckBox.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { boolean isChecked = ((CheckBox) v).isChecked(); ApplicationController.getEventBus().post(((OutletData) getChild(groupPosition, childPosition)).getOutletID()); if (isChecked) { ((OutletData) getChild(groupPosition, childPosition)).setSelected("1"); } else { ((OutletData) getChild(groupPosition, childPosition)).setSelected("0"); } } }); return convertView; } 

En primer lugar, tome ejemplo de la vista de lista simple, no la vista de lista expandible. ListView es el contenedor que contiene un montón de elementos.
Esos elementos tienen vistas secundarias que consisten en los elementos individuales que forman una fila en el ListView. Diferentes textViews, etc.
El getView () del adaptador, funciona en el conjunto de datos y luego crea elementos en la lista. Por lo tanto, si cambia el conjunto de datos que se utiliza para crear el adaptador y llama a notifyDatasetChanged (), actualiza la vista de lista.

Ahora en su caso, Usted puede estar usando una ArrayList para representar los objetos como "NORTH". Así que si almacena el valor de count en este objeto, entonces la actualización de count será fácil. Sólo tiene que acceder a los datos de la lista mediante groupPosition y actualizarlos. Y llama a la notifyDatasetChanged.

Digamos que utilizaste mList que es ArrayList del tipo Object, para crear el adaptador

 // ArrayList<Object> mList; // You created mAdapter from this mList // now mList is data set for this adapter 

Así que en getChildView () escribes:

 @Override public void onClick(View v) { boolean isChecked = ((CheckBox) v).isChecked(); ApplicationController.getEventBus().post(((OutletData) getChild(groupPosition, childPosition)).getOutletID()); if (isChecked) { // your code int count = ((OutletListData) getGroup(groupPosition)).getCount(); count++; ((OutletListData) getGroup(groupPosition)).setCount(count); notifyDataSetChanged(); } else { // your code; int count = ((OutletListData) getGroup(groupPosition)).getCount(); count--; ((OutletListData) getGroup(groupPosition)).setCount(count); notifyDataSetChanged(); } } 

Ahora la única limitación a este enfoque es que el recuento debe ser una parte de Object. Por lo tanto, si está iniciando la cuenta por primera vez desde algún otro lugar, pero no desde el propio objeto, le recomendaré que almacene el recuento en el propio objeto e inicialice el valor de textView desde allí.
Así que en getGroupView ()

 groupViewHolder.GroupCount.setText(""+((OutletListData) getGroup(groupPosition)).getCount()); 
  • Android creando cadena de animación ViewPropertyAnimator
  • No es un archivo DRM, abriendo notmally
  • Android: agrega la vista al diseño haciendo que el diseño esté delante de ActionBar
  • ExpandableListView con arrastrar y soltar de elementos de la lista en Android
  • YouTubePlayerFragment en ListView con AppCompatActivity Error
  • Establecer un ancho máximo en un grupo de vistas
  • Android: poner una imagen sobre otra imagen
  • ListView muestra imágenes incorrectas y duplicadas
  • Android WebView no sólo de vídeo audio
  • Expanda todos los niños en la vista de lista expandible
  • Disposición de superposición de Android encima de todas las ventanas que recibe toques
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.