2011-06-28 44 views
1

即時通訊嘗試刷新我的列表視圖後,我從SQLite數據庫刪除行。 這是它的一部分:如何刷新列表視圖與sqlite數據庫

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); } 

然後在我的getView我做的:

回答

1

您是否使用了遊標?如果是這樣,你可以撥打電話:

cursor.requery(); 
+0

這附帶一些[注意事項](http://developer.android.com/reference/android/database/Cursor.html#requery()),但它的作品。 – dmon

+0

requery()已棄用。 – Suchi

+0

公平的保證。我過去只是用它來刪除,但是對於排序或其他我請求一個新的遊標的東西。 –

0

您是否使用列表來填充您的ListView?我寧願做手工這樣的 -

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

不,我沒有使用列表...即時通訊使用光標與數據庫和一些文件夾中的圖像。任何人.....? – Codes12

+0

我在評論中看到了您的代碼。您正在使用vidRows來填充您的列表。這段代碼應該適合你。 – Suchi

+0

試過了。沒有工作。 – Codes12

0

我知道這是有點老,但我會在萬一別人回覆有同樣的問題,它可以幫助。

你可以使用光標適配器和使用swapCursor光標傳給它,然後當你刪除行,你可以做後續的一個(使用onCursorLoader時也適用):

  1. 從刪除行你適配器的分貝外,然後調用adapter.notifyDataSetChanged()

  1. 嵌入您的適配器內部數據庫,並創建一個刪除方法所以當你調用adapter.delete()更新列表(如果你仍然使用它)和數據庫。