Android getChildView no se llama después de notifyDataSetChanged

Tengo un expandableListView y he intentado cambiar su childs como eso:

((SubItem) adapter.getChild(i+1, 5)).setCount(unreadBox); adapter.notifyDataSetChanged(); 

Aquí está mi clase de adaptador:

 public class DrawerAdapter extends BaseExpandableListAdapter { private Context context; private List<Item> items; private List<List<SubItem>> subItems; public DrawerAdapter(Context context, List<Item> items, List<List<SubItem>> subItems) { this.context = context; this.items = items; this.subItems = subItems; } @Override public int getGroupCount() { return items.size(); } @Override public int getChildrenCount(int groupPosition) { return subItems.get(groupPosition).size(); } @Override public Object getGroup(int position) { return items.get(position); } @Override public Object getChild(int groupPosition, int childPosition) { return subItems.get(groupPosition).get(childPosition); } @Override public long getGroupId(int position) { return position; } @Override public long getChildId(int groupPosition, int childPosition) { return childPosition; } @Override public boolean hasStableIds() { return false; } @Override public View getGroupView(int groupPosition, boolean isExpanded, View view, ViewGroup viewGroup) { Item item = (Item) getGroup(groupPosition); if (view == null) { LayoutInflater layoutInflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); view = layoutInflater.inflate(R.layout.list_drawer_group, null); } ImageView iconView = (ImageView) view.findViewById(R.id.icon_view); if (item.iconDrawableId != null) { iconView.setImageResource(item.iconDrawableId); iconView.setVisibility(View.VISIBLE); } else { iconView.setVisibility(View.GONE); } TextView groupHeader = (TextView) view.findViewById(R.id.group_header); groupHeader.setText(item.title); if (item.iconDrawableId != null) { groupHeader.setPadding( DimensionHelper.dpToPixels(context, 4.0f), 0, DimensionHelper.dpToPixels(context, 16.0f), 0); } else { groupHeader.setPadding( DimensionHelper.dpToPixels(context, 16.0f), 0, DimensionHelper.dpToPixels(context, 16.0f), 0); } ImageView imageView = (ImageView) view.findViewById(R.id.image_view); imageView.setImageResource(isExpanded ? R.drawable.ic_navigation_collapse : R.drawable.ic_navigation_expand); imageView.setVisibility(getChildrenCount(groupPosition) > 0 ? View.VISIBLE : View.GONE); return view; } @Override public View getChildView(int groupPosition, int childPosition, boolean isExpanded, View view, ViewGroup viewGroup) { SubItem subItem = (SubItem) getChild(groupPosition, childPosition); if (view == null) { LayoutInflater layoutInflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); view = layoutInflater.inflate(R.layout.list_drawer_item, null); } TextView colorPreView = (TextView) view.findViewById(R.id.colorPreView); if (subItem.getColor() != -1) { colorPreView.setBackgroundColor(subItem.getColor()); colorPreView.setVisibility(View.VISIBLE); } else { colorPreView.setVisibility(View.GONE); } ImageView iconView = (ImageView) view.findViewById(R.id.icon_view); if (subItem.iconDrawableId != null) { iconView.setImageResource(subItem.iconDrawableId); iconView.setVisibility(View.VISIBLE); } else { iconView.setVisibility(View.GONE); } TextView title = (TextView) view.findViewById(R.id.title_text_view); title.setText(subItem.title); if (subItem.iconDrawableId != null) { title.setPadding( DimensionHelper.dpToPixels(context, 4.0f), 0, DimensionHelper.dpToPixels(context, 16.0f), 0); } else { title.setPadding( DimensionHelper.dpToPixels(context, 40.0f), 0, DimensionHelper.dpToPixels(context, 16.0f), 0); } TextView counter = (TextView) view.findViewById(R.id.counter_text_view); counter.setText(String.valueOf(subItem.count)); counter.setVisibility(subItem.count > 0 ? View.VISIBLE : View.GONE); return view; } @Override public boolean isChildSelectable(int groupPosition, int childPosition) { return true; } public static class Item { protected String title; protected Integer iconDrawableId; protected Listener listener; public Item(String title, Integer iconDrawableId, Listener listener) { this.title = title; this.iconDrawableId = iconDrawableId; this.listener = listener; } public Listener getListener() { return listener; } public static interface Listener { public void onClick(FragmentManager fragmentManager); } } public static class SubItem extends Item { protected long count; protected int color; public SubItem(String title, Integer iconDrawableId, long count, int color, Listener listener) { super(title, iconDrawableId, listener); this.count = count; this.color = color; } public long getCount() { return count; } public void setCount(long count) { this.count = count; } public int getColor() { return color; } public void setColor(int color) { this.color = color; } } } 

El método notifyDataSetChanged () no funciona correctamente, a veces getChildView se llama a veces no, por favor ayuda para solucionar este problema.

One Solution collect form web for “Android getChildView no se llama después de notifyDataSetChanged”

Usted está cambiando el valor al artículo del niño sin embargo el ajuste detrás dentro del adaptador.

 SubItem item = ((SubItem) adapter.getChild(i+1, 5)).setCount(unreadBox); adapter.setChild(i+1,5,item); adapter.notifyDataSetChanged(); 

Añadir esto en adaptador

 @Override public void setChild(int groupPosition, int childPosition,SubItem item) { subItems.get(groupPosition).get(childPosition) = item; } 
  • ¿Quieres implementar notifyDataSetChanged o autorefresh a mi RecyclerView pero no funciona
  • Emitir refrescando una vista de una fila en recyclerview
  • Mantener el foco en TextView después de notifyDatasetChanged () fue llamado en listview personalizado?
  • Cómo evitar la renovación de las celdas al llamar a notifyDataSetChanged () para PinterestLikeAdapterView?
  • Android ListView no se actualiza después de notifyDataSetChanged
  • Cómo proporcionar animación personalizada durante la clasificación (notifyDataSetChanged) en RecyclerView
  • ¿Por qué no necesito usar Adapter.notifyDataSetChanged ()?
  • Android: ListFragment refresh utilizando notifyDataSetChanged () con el adaptador personalizado no funciona
  • Cómo actualizar algunos datos en un ListView sin utilizar notifyDataSetChanged ()?
  • Android: detecta si un ListView tiene la barra de desplazamiento (después de configurar nuevos datos)
  • NotifyDataSetChange no funciona desde un adaptador personalizado
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.