Mise à jours d'une ListView contenant un adapter custom
Bonjour,
je buttes sur un problème en vain depuis plusieurs jours et j'aimerais savoir si vous pouviez m'apporter une solution::cry:
Sans rentrer dans les détails et pour faire simple je développe un logiciel gestion de frigidaire et pour modifier facilement les quantités de mes aliments dans ce dernier, mon frigidaire est représenté par une listview de views comprenant le nom de l'aliment, la quantité et un bouton + et - permettant de modifier cette quantité. j'ai donc créé un Adapter héritant de BaseAdapter nommé ManagedIngredientListAdapter.
Le problème est que même en appelant notifyDataSetChanged ou notifyDataSetInvalidated sur l'adapter parent dans l'événement de mes boutons, l'affichage de la quantité n'est pas modifié, alors que la valeur de l'attribut l'est et que la liste est mise à jours (enfin après l'appel de cette méthode et sans trop savoir pourquoi la place des ingrédients change dans la liste, ce qui est plutôt gênant 8O).
Après c'est peut être moi qui doit ré-implémenter ces deux fonctions dans ma nouvelle classe Adapter.
Je n'arrive pas à comprendre pourquoi l'affichage n'est pas rafraichit, sachant que même un appel à setAdapter après le changement des quantités ne change rien.
Merci pour vos réponses
Voici le code mon adapter custom
public class ManagedIngredientAdapter extends BaseAdapter {
private Context mContext;
private List<ManagedIngredientView> mItems = new ArrayList<ManagedIngredientView>();
public ManagedIngredientAdapter(Context context) {
mContext = context;
}
public void addItem(ManagedIngredientView mi) { mItems.add(mi); }
public void setListItems(List<ManagedIngredientView> lit) { mItems = lit; }
public int getCount() { return mItems.size(); }
public Object getItem(int position) { return mItems.get(position); }
public boolean areAllItemsSelectable() { return false; }
public boolean isSelectable(int position)
{
return true;
}
/** Use the array index as a unique id. */
public long getItemId(int position)
{
return position;
}
public View getView(int position, View convertView, ViewGroup parent)
{
ManagedIngredientView mv;
if (convertView == null) {
mv = mItems.get(position);
} else { // Reuse/Overwrite the View passed
// We are assuming(!) that it is castable!
mv = (ManagedIngredientView) convertView;
}
return mv;
}
}