Android Loader,为什么restartLoader不刷新我的Listview?

时间:2013-09-30 17:08:15

标签: android cursor android-cursoradapter android-loadermanager android-loader

我正在尝试执行以下操作

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方法中需要更聪明的东西吗?

请提供任何提示和指示?

谢谢!!!

0 个答案:

没有答案