2011-06-28 42 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()更新列表(如果你仍然使用它)和数据库。