0

我正在尝试执行以下操作

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 方法中使用更聪明的方法?

请问有什么提示和指点吗?

谢谢 !!!

4

0 回答 0