如何从 CursorAdapter 中刷新 ListView?
我的 Activity 中有一个 ListView,它是在 onCreate
中设置的,然后
MyCursorAdapter adapter = new TaskConditsCursorAdapter(this, conditsCursor, taskID, isNewTask);
setListAdapter(adapter);
我在 MyCursorAdapter
中做了一些工作。其中,我有一个特定于行的 AlertDialog:
...
builder.setPositiveButton("OK"), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
changeTaskConditBoolValue(taskId, conditId, chosenBoolValue2);
// refresh?
}
});
在 changeTaskConditBoolValue
之后,我想重新加载我的列表,因为此方法更改了数据库中的某些内容,但列表没有更新。 requery()
结果列表为空。 我怎样才能“高出一层”来再次使用适配器
,然后我应该做什么?
多谢!
I've got a ListView in my Activity, which is set in the onCreate
by
MyCursorAdapter adapter = new TaskConditsCursorAdapter(this, conditsCursor, taskID, isNewTask);
setListAdapter(adapter);
Then I do some work in the MyCursorAdapter
. Amongst others I have a rowspecific AlertDialog:
...
builder.setPositiveButton("OK"), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
changeTaskConditBoolValue(taskId, conditId, chosenBoolValue2);
// refresh?
}
});
After the changeTaskConditBoolValue
I want to reload my List, since this method changed something in the database, but the List didn't update. requery()
results in the list being empty.
How can I come "one level above" to work with the adapter
again and what should I do to it then?
Thanks a lot!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
在
MyCursorAdapter
中由onClick
调用的方法中 - 在我的例子中,它是changeTaskConditBoolValue(...)
我必须调用:我的数据库类创建了一个新游标,并用新游标替换了它自己的旧游标。
没有找到其他方法可以从 CursorAdapter 内部更改光标。
In the
MyCursorAdapter
in the method called by theonClick
- in my case it ischangeTaskConditBoolValue(...)
I have to call:This gets a new cursor by my Database-Class and replaces its own old one with the new one.
Found no other way to change the cursor from inside the CursorAdapter.
只需调用
文档:此处
Just call
Documentation: Here
调用适配器的requery()是唯一的解决方案。
但 requery() 方法已被弃用。所以我们可以使用LoaderManager和Loader。
calling requery() of adapter is the only solution.
But the method requery() is deprecated. So we can use LoaderManager and Loader.
这对我有用,我不确定这是最好的方法。
我刷新了唯一的光标,我不知道如何处理新的光标。
This is what works for me, im not sure its the best way.
I refresh the only cursor, I dont know what to do with a new one.