如何退出上下文操作模式时刷新Listview

时间:2014-01-18 11:09:26

标签: android android-listfragment

我有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。请帮忙。

谢谢。

2 个答案:

答案 0 :(得分:0)

调用invalidateViews()来刷新ListFragment ...

listFragment.getListView()invalidateViews();

答案 1 :(得分:-1)

让你的Fragment实现ActionMode.Callback和

LoaderManager.LoaderCallbacks<Cursor> 

然后你可以打电话

getLoaderManager.restartLoader(LOADER_ID, null, **this**) 
来自onActionItemClicked的