我正在尝试执行以下操作
1) Activity with a List view
2) Talks to content ContentProvider
3) Populates the ListView with contents of Cursor
4) User can then add new items to database
5) After each item is added I want to refresh the list view to show the updated items.
第 5 点之前的一切都有效。
所以我需要在添加项目后重新启动加载程序的帮助。
因此,在将数据添加到我正在调用的数据库中之后:
getLoaderManager().restartLoader(ID, null, MyFragment.this);
在 Loader 方法中,我只是这样做:
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
Log.w(TAG, "onCreateLoader");
cursorLoader = new CursorLoader(getActivity(),
MyContract.CONTENT_URI,
null, null, null, "_id ASC");
return cursorLoader;
}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
adapter.swapCursor(cursor); //swap the new cursor in.
}
@Override
public void onLoaderReset(Loader<Cursor> loader) {
adapter.swapCursor(null);
}
调用此方法时,ListView 将变为空白。列表中的所有先前项目都将消失。
如果我退出我的活动并再次返回,SimpleCursorAdapter 将使用数据库中添加的项目填充 ListView。
所以我知道它们已正确添加。
但是在我调用restartLoader 后它没有显示。
有谁知道我如何使用 Loader 刷新 listView ?
我应该在之后打电话吗
getLoaderManager().restartLoader(1, null, MyFragment.this);`
还是我需要在 onLoaderReset 方法中使用更聪明的方法?
请问有什么提示和指点吗?
谢谢 !!!