Question

J'utilise un adaptateur de liste pour afficher différents magasins, lorsque quelqu'un sélectionne un magasin, il les amène à une nouvelle activité où il peut ajouter le magasin au favori sur cet écran.

Il y a un bouton de retour sur ces appels finish(); Cela remonte à l'écran avec la ListView.

Maintenant, le problème est que la ListView n'est pas mise à jour (c'est-à-dire ne montre pas que le magasin est déjà ajouté au favori). J'ai essayé ce code mais pas de chance:

@Override
public void onResume() {
    super.onResume();
    list.setAdapter(null);      
    updateMyList();
    adapter=new LazyAdapter(this, ((String[])names.toArray(new String[0])), 
        ((String[])status.toArray(new String[0])));
    list.setAdapter(adapter);
}

updateMyList() Appelle l'API du serveur et met à jour les noms et les tableaux d'état.

Avec ce code, la liste ne met pas vraiment à jour ...

Était-ce utile?

La solution

Vous devez setadapter dans votre onCreate() seulement, à l'intérieur onResume() Tu devais juste appeler adapter.notifyDataSetChanged() avec la nouvelle collection de données. Cela actualisera votre ListView avec la nouvelle collection de données.

Autres conseils

Utilisez ce code:

myList.clear();
myList.add("your array list items");            
setListAdapter(adapter);
adapter.notifyDataSetChanged();

Je crois que ceci vous aidera.

Merci....

Tout d'abord, vous avez besoin d'ajouter la liste des magasins à l'arraylist, soumettez ceci liste des tableaux au ADAPTATEUR puis ajoutez-le à la vue de la liste

 list.setAdapter(adapter);

Il affichera la liste des magasins; prendre onListItemClick cliquez là-bas, vous obtiendrez listItem Identifiant; En utilisant l'ID de l'élément de liste, vous pouvez donner une telle intention

Intent intent=new Intent(getApplicationContext(),------.class);
  startActivityForResult(intent);

Suivre une classe de méthodes Java Bean / Setter et Getter; Prenez la méthode Getter comme statique, définissez le nom du magasin ce que vous avez créé dans l'activité enfant; Méthode de remplacement appelé onBackPressed(); À l'intérieur de cette méthode Écrivez

setResult(RESULT_OK);
finish();

prendre une méthode onActivityForResult() dans la classe parent; À l'intérieur de cette méthode

 arraylist.add(javabeanClassname.getName());

Ajoutez cette ArrayList au Adapter Et écrivez le code

 list.setAdapter(adapter);

Avant d'ajouter une nouvelle vue pour ListView supprimer toute la vue précédente

listView.removeAllViews(); 

puis ajoutez la classe d'adaptateur avec de nouvelles valeurs. Une chose s'assure que vos valeurs sont mises à jour pendant votre retour de la deuxième activité, et ce code appelle.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top