我有SherlockListFragment,它实现了上下文操作模式。 onActionItemClicked方法更新数据库中的条目。如何刷新SherlockListFragment以更新Listview?
这是我的SherlockListFragment类,带有ActionMode.Callback
public class FavListFragment extends SherlockListFragment implements LoaderManager.LoaderCallbacks<Cursor> {
...
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
...
getListView().setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view,
int position, long id) {
if(mActionMode != null) {
return false;
}
mActionMode = getSherlockActivity().startActionMode(actionModeCallback);
return true;
}
});
}
private ActionMode.Callback actionModeCallback = new ActionMode.Callback() {
...
@Override
public void onDestroyActionMode(ActionMode mode) {
mActionMode = null;
}
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
switch(item.getItemId()) {
case R.id.deleteMenu:
int id = cursor.getInt(cursor.getColumnIndex("_id"));
ContentValues values = new ContentValues();
Uri singleUri = ContentUris.withAppendedId(ZikrContentProvider.CONTENT_FAV_ID_URI, id);
values.put(FAV, 0);
getSherlockActivity().getContentResolver().update(singleUri, values, null, null);
mode.finish();
return true;
default:
return false;
}
}
};
}
我已经尝试过adapter.notifyDataSetChanged,但ListView没有得到更新。我也试过getLoaderManager.restartLoader(LOADER_ID,null,arg),但我不确定我应该指定argument3。我的适配器是SimpleCursorAdapter。请帮忙。
谢谢。
答案 0 :(得分:0)
调用invalidateViews()来刷新ListFragment ...
listFragment.getListView()invalidateViews();
答案 1 :(得分:-1)
让你的Fragment实现ActionMode.Callback和
LoaderManager.LoaderCallbacks<Cursor>
然后你可以打电话
getLoaderManager.restartLoader(LOADER_ID, null, **this**)
来自onActionItemClicked的