2010-10-18 8 views
3

EDIT 2:adaptateurs notifyDataSetChanged ne fonctionne pas

Je ne résoudre mon problème, mais je ne sais pas comment: S je bougeais mon extraits de code un peu autour, un coup cela a fonctionné. Doit avoir fait quelque chose dans le mauvais ordre, mais c'est bizarre, vérifié plusieurs fois. Merci pour votre aide, et désolé je ne peux pas poster une réponse;)

Salut.

J'ai une vue de liste que j'essaye d'actualiser pour la mettre à jour automatiquement quand j'ajoute un élément à la liste sous-jacente de tableau.

Voici l'extrait de code:

private void addEvent() { 
    arrlEvents.add(event); 
    adptEvents.notifyDataSetChanged(); 
    updateSaveFile(); 
    filterList(); 
} 

Les arrlEvents est le arraylist sous-jacente avec les événements, et im l'ajout d'un événement, en essayant de mettre à jour la vue de la liste avec notifyDataSetChanged(), mais cela ne fonctionne pas. Quelqu'un peut-il aider?

Merci pour votre temps :)

EDIT: Voici le code source pour l'adaptateur:

private ArrayAdapter<Event> adptEvents; 
adptEvents = new ArrayAdapter<Event>(EventCalendar.this, R.layout.list_items, arrlEvents); 
+0

Il serait utile si vous publiez le code source de votre carte. – Felix

+0

fait maintenant, s'il vous plaît vérifier – lands

Répondre

2

J'ai vu que parfois il ne marche pas au hasard juste signaler à l'adaptateur. Essayez d'utiliser adptEvents comme protégé ou public sur une portée globale.

J'ai trouvé que lorsque cela ne fonctionne pas. Vous pouvez tout simplement ré régler l'adaptateur à nouveau, Il suffit de remplacer le notifyDataSetChanged() pour:

adptEvents = new ArrayAdapter<Event>(EventCalendar.this, R.layout.list_items, arrlEvents); 

Edit:

Heres un snipper de code d'une application, j'ai écrit que les œuvres.

définition de classe:

public class ClassName extends ListActivity implements AdapterView.OnItemSelectedListener { 

variable globale:

CustomAdapter adapter; 

dans OnCreate():

adapter = new CustomAdapter(this,R.layout.layout_name,dataSet); 
setListAdapter(adapter); 

Chaque fois que je dois aviser

adapter.notifyDataSetChanged(); 
+0

ne fonctionne pas, merci quand même :) – lands

+0

Edited ma réponse, ce code fonctionne au moins sur les émulateurs Api 7 et 8 et un Nexus un runing 2.2 – blindstuff

+0

Voilà ce que je me suis retrouvé avec, sauf la partie des outils.Le choisir comme la bonne réponse;) – lands

2

Il n'y a pas de lien persistant entre arrlEvents et les adptEvents .... ce dernier s'initialise simplement avec les éléments du premier. adptEvents n'a aucun moyen de savoir quand arrlEvents change.

Pour ajouter de nouveaux éléments, vous devez appeler adptEvents.add (événement) et ne pas déranger notifyDataSetChanged() explicitement, depuis ArrayAdapter.add() does that for you automatically.

+0

merci pour le conseil – lands

+0

C'est plus une réponse qu'une astuce vraiment ... :) –