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; } 
  • NotifyDataSetChanged () no funciona con mi adaptador para gridview
  • Cómo proporcionar animación personalizada durante la clasificación (notifyDataSetChanged) en RecyclerView
  • Actualizar Android ListView
  • ¿Quieres implementar notifyDataSetChanged o autorefresh a mi RecyclerView pero no funciona
  • NotifyDataSetChange no funciona desde un adaptador personalizado
  • ¿Por qué no "notifyDatasetChanged ()" notifica todos los elementos visibles?
  • Error: No se puede resolver notifyDataSetChanged (); Androide
  • Cómo añadir sugerencias dinámicamente a autocompletetextview con preservar el estado de los caracteres
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.