Android ListView mise à jour avec SimpleCursorAdapter
Hey j'utilise une listview pour démontrer les entrées qui sont stockés dans une base de données. J'ai aussi un EditText élément et un bouton qui ajoute le contenu de l'EditText dans la Base de données. Pour lier la vue de la base de données de contenu-je utiliser le SimpleCursorAdapter et à la suite de remplir la fonction:
private void populate() {
cursor = dbAdapter.getAllItems();
startManagingCursor(cursor);
String[] from = new String[] { DBAdapter.KEY_TASK };
int[] to = new int[] { android.R.id.text1 };
//Now create an array adapter and set it to display using our row
cursorAdapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, cursor, from, to);
list.setAdapter(cursorAdapter);
}
Si j'ai ajouté une nouvelle entrée, en cliquant sur le bouton je souhaite actualiser la liste, mais cela ne fonctionne qu'avec les remplir de fonction et non pas avec les communes de l'adaptateur de la fonction notifyDataSetChanged();
. Dois-je avoir un bug ou est-ce la bonne manière d'actualiser un listview?
InformationsquelleAutor Siggy Petersen | 2011-11-21
Vous devez vous connecter pour publier un commentaire.
Avez-vous vu cette, essayé le swap curseur méthode, ou essayé de simplement appeler setAdapter() de nouveau?
J'ai eu un problème similaire où je ne pouvais pas obtenir ma liste à jour, et ce que j'ai fait était juste de créer un refreshListView() la méthode. Maintenant, vous pouvez appeler au départ de votre onCreate(), ET chaque fois qu'un utilisateur ajoute quelque chose à la bd. Il n'est de re-lier le listview à un curseur. Avec tous les autodérision méthodes (requery()), et les enjeux de la notifyDataSetChanged(), j'ai décidé que c'était le moyen le plus facile.
populate()
fonction je l'appelle dans mononCreate()
méthode, et si je clique sur le Bouton "Ajouter". Je voulais seulement savoir si c'est une bonne solution pour appeler cette méthode à la place de l'appel de la communenotifyDataSetChanged()
méthode de l'adaptateur de base de la classe.Veuillez vous référer à ce lien...il fonctionne comme un charme
Mise à jour SimpleCursorAdapter tout en maintenant la position de défilement dans ListView
dynamique listview sur faites défiler jusqu'j'ai ajouté un nouvel élément à partir de la base de données ..
J'ai fait l'erreur ici ..
j'ai été l'attribution nouvelle carte à chaque fois pour la même simplecursoradapter .
Au lieu de créer un nouvel adaptateur.
utilisez simplement
Vous devez appeler
swapcursor()
avantnotifyDataSetChanged()
sur la carte.