здесь мой код в моем ListFragment (я использую контекстное меню):ListFragment не обновит
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item
.getMenuInfo();
Log.d(TAG, "onContextItemSelected clicked");
long id = info.id;
Log.d(TAG, "list id " + id);
int menuItemIndex = item.getItemId();
Log.d(TAG, "menuItemIndex " + menuItemIndex);
if (menuItemIndex == 0) {
try {
plantManager.deletePlantRelation(id);
CharSequence text = getActivity().getString(
R.string.info_could_delete_plant);
Toast toast = Toast.makeText(getActivity(), text,
Toast.LENGTH_LONG);
toast.show();
loader = getLoaderManager().restartLoader(0, null, this);
myAdapter.notifyDataSetChanged();
} catch (Exception ex) {
ex.printStackTrace();
CharSequence text = getActivity().getString(
R.string.info_could_not_delete_plant);
Toast toast = Toast.makeText(getActivity(), text,
Toast.LENGTH_LONG);
toast.show();
}
}
return true;
}
Метод выполняется, и я получаю Toast-сообщение - но список не будет обновляться ,
С нетерпением жду вашей помощи.
Заранее благодарен!
обновление:
public Loader<Cursor> onCreateLoader(int arg0, Bundle arg1) {
return new CursorLoader(getActivity()) {
@Override
public Cursor loadInBackground() {
myCursor = plantManager.fetchPlantRelations();
return myCursor;
}
};
}
Думаю, нам нужно будет увидеть код для onCreateLoader. Если deletePlantRelation фактически удаляет элемент из базового набора данных, вам не нужно будет перезапускать загрузчик * и * notifyDataSetChanged ... –
да набор данных удален из базы данных - я проверил его – user1800825
ну, это не огромная помощь : что делает fetchPlantRelations? Дело здесь в том, что ничто из этого не должно быть необходимым. См. Ответ ниже. –