我正在使用数据库,并且有一个列表片段,它使用游标适配器通过在加载器中查询数据库来获得。当用户长按列表视图项时,他会看到上下文菜单和删除此条目的选项。当他按下删除时,我正在启动一个删除此条目的线程,然后再次启动加载程序以获取新光标(因为不推荐使用“requery()”)。当加载器完成加载新光标时,我正在尝试使用changeCursor
假设刷新列表视图但它没有这样做的方法,所以我尝试使用notifyDataSetChanged
但它也不起作用。我已经检查过,光标从加载器返回,它确实改变了光标,但列表视图没有刷新。
我应该怎么办?重新启动片段?
这是一些代码:
case MENU_REMOVE:
final AdapterContextMenuInfo info = (AdapterContextMenuInfo)item.getMenuInfo();
mProgress = ProgressDialog.show(getActivity(), getString(R.string.list_remove_progress_title_text),
getString(R.string.progress_dialog_description));
new Thread(new Runnable() {
@Override
public void run() {
PlacesHandler wph = new PlacesHandler(getActivity());
wph.DeleteEntry(mPlaceName, info.id);
getLoaderManager().initLoader(0, null, ListFragment.this);
}
}).start();
return(true);
加载完成后:
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
if(mProgress == null || !mProgress.isShowing()){
...
}
else{
mProgress.dismiss();
mAdapter.changeCursor(data);
mAdapter.notifyDataSetChanged();
}
}
谢谢!