2014-01-18 2 views
0

문맥 액션 모드를 구현하는 SherlockListFragment가 있습니다. onActionItemClicked 메소드는 데이터베이스의 항목을 업데이트합니다. SherlockListFragment를 새로 고쳐 Listview를 업데이트하려면 어떻게해야합니까?문맥 액션 모드를 종료 할 때 Listview를 새로 고치는 방법

여기 ActionMode.Callback

내가 adapter.notifyDataSetChanged을 시도
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; 
       } 

      } 
     }; 
    } 

내 SherlockListFragment 클래스이지만, ListView에 업데이트되지 않습니다. 또한 getLoaderManager.restartLoader (LOADER_ID, null, arg)를 시도했지만 argument3을 지정해야하는 이유가 확실하지 않습니다. 내 어댑터는 SimpleCursorAdapter입니다. 도와주세요.

감사합니다. .

답변

0

통화 invalidateViews() ...

listFragment.getListView()를 ListFragment를 새로 invalidateViews();

-1

모두 ActionMode.Callback 다음

LoaderManager.LoaderCallbacks<Cursor> 

을 구현하는 당신의 조각 당신이 onActionItemClicked

에서

getLoaderManager.restartLoader(LOADER_ID, null, **this**) 

를 호출 할 수 받기