2011-06-28 4 views
1

en essayant d'actualiser ma liste après avoir supprimé une ligne de SQLite DB. Cela fait partie de celui-ci:comment actualiser listview avec sqlite DB

cursor = mysqlAdapter.fetchAll(); // a method from sqlite adater class 
ArrayList<MyInfo> vidRows = new ArrayList<MyInfo>(); 
if (cursor.moveToFirst()) { 
do { ...... } 
while (cursor.moveToNext()); } 
mList.setAdapter(new SomeAdapter(this, vidRows)); 
mList.setOnItemClickListener(this); 
registerForContextMenu(mList); } 

Puis dans mon getView je fais:

Répondre

1

Utilisez-vous un curseur? Si oui, vous pouvez simplement appeler:

cursor.requery(); 
+0

Cela vient avec quelques [avertissements] (http://developer.android.com/reference/android/database/Cursor.html#requery()), mais cela fonctionne. – dmon

+0

requery() est obsolète. – Suchi

+0

juste nuff. Je l'ai utilisé dans le passé pour une suppression seulement, mais pour le tri ou toute autre chose, je demande un nouveau curseur. –

0

Utilisez-vous une liste pour remplir votre ListView? Je préférerais le faire manuellement comme celui-ci -

myList.remove(delPos); 
getListView().invalidateViews(); 
+0

non je n'utilise pas une liste ... im en utilisant le curseur avec DB et quelques images d'un dossier. N'importe qui.....? – Codes12

+0

J'ai vu votre code ci-dessus dans les commentaires. Vous utilisez vidRows pour remplir votre liste. Ce code devrait fonctionner pour vous. – Suchi

+0

Je l'ai essayé. n'a pas fonctionné. – Codes12

0

Je sais que c'est un peu vieux, mais je vais répondre au cas où quelqu'un d'autre a le même problème et il peut aider.

Vous pouvez utiliser un adaptateur de curseur et passer le curseur sur l'aide swapCursor (fonctionne aussi lors de l'utilisation onCursorLoader) puis à chaque fois que vous supprimez une ligne que vous pourriez faire l'un des suivants:

  1. supprimer une ligne de votre db extérieur de l'adaptateur, puis appelez adapter.notifyDataSetChanged()

ou

  1. la db dans intégrer votre adaptateur et créer une méthode de suppression Ainsi, lorsque vous appelez le fichier adapter.delete(), vous mettez à jour à la fois la liste (si vous l'utilisez toujours) et la base de données.