我有一个国家和国际组织的数据库。每个国家/地区都可以是多个组织的成员,每个组织至少有一个成员(换句话说,多对多)。我使用着名的LoaderManager framework进行显示。但在我之后
删除项目(某些项目),所有片段显示已删除的项目。我尝试使用onContextItemSelected
类MyFragment extends SherlockListFragment
中的this solution但未发生任何事情。
解决。
我试图找出原因很有趣。我终于找到了它。如果我使用URI Uris.MY_URI
作为the CursorLoader constructor的参数,我将在deleting.时使用相同的URI。我确信有一个更优雅的解决方案,但这个有效。我甚至不需要致电the restartLoader method。
@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);
}
<{3>}中的。