0

我有一个国家和国际组织的数据库。每个国家都可以是多个组织的成员,每个组织至少有一个成员(换句话说,多对多)。我使用著名的LoaderManager 框架进行显示。但是在我删除一个项目(一些项目)后,所有片段都显示了已删除的项目。我试图从课堂上使用这个解决方案onContextItemSelectedMyFragment extends SherlockListFragment但什么也没发生。

解决了。

试图找出原因,我玩得很开心。我终于找到了。如果我使用 URIUris.MY_URI作为CursorLoader 构造函数的参数,我将不得不在删除时使用相同的 URI。我确信有一个更优雅的解决方案,但这个可行。而且我什至不需要调用restartLoader 方法

@Override
public Loader<Cursor> onCreateLoader(int id, Bundle loaderExtras) {
    // Some code
    return new CursorLoader(getActivity(), Uris.MY_URI, mProjection, selection, selectionArgs, sortOrder);
}

@Override
public void onListItemClick(ListView l, View v, int position, long id) {
    String selection = Columns._ID + "=?";
    String selectionArgs[] = new String[] {
            Long.toString(id)
    };
    long rows = getActivity().getContentResolver().delete(Uris.MY_URI, selection, selectionArgs);

    super.onListItemClick(l, v, position, id);
}

在查询方法cursor.setNotificationUri(getContext().getContentResolver(), uri);中返回游标之前不要忘记关于

if (result > 0) {
        // result is the number of deleted items
        getContext().getContentResolver().notifyChange(uri, null);
}

删除方法中。

4

0 回答 0