我正在尝试执行以下操作
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点的所有内容都有效。
在添加项目后,我需要帮助重新启动Loader。
所以在将数据添加到数据库后,我正在调用:
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方法中需要更聪明的东西吗?
请提供任何提示和指示?
谢谢!!!