2013-12-04 6 views
2

Я использую контекстное действие Barwith ListView (SELO MODE SINGLE). Все работает, но я не знаю, как получить выбранный элемент.Как получить выбранный элемент списка в панели контекстного действия

listViewData.setChoiceMode(ListView.CHOICE_MODE_SINGLE); 

listViewData.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { 
     @Override 
     public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { 
      if (mActionMode != null) { 
       return false; 
      } 

      mActionMode = ((ActionBarActivity) getActivity()).startSupportActionMode(mActionModeCallback); 
      view.setSelected(true); 
      return true; 
     } 
}); 

private ActionMode.Callback mActionModeCallback = new ActionMode.Callback() { 
    @Override 
    public boolean onCreateActionMode(ActionMode mode, Menu menu) { 
     MenuInflater inflater = mode.getMenuInflater(); 
     inflater.inflate(R.menu.context_menu, menu); 
     return true; 
    } 

    @Override 
    public boolean onPrepareActionMode(ActionMode mode, Menu menu) { 
     return false; 
    } 

    @Override 
    public boolean onActionItemClicked(ActionMode mode, MenuItem item) { 

     switch (item.getItemId()) { 
      case R.id.menu_edit: 
       mode.finish(); 
       return true; 
      case R.id.menu_share: 
       mode.finish(); 
       return true; 
      case R.id.menu_delete: 
       mode.finish(); 
       return true; 
      default: 
       return false; 
     } 
    } 

    @Override 
    public void onDestroyActionMode(ActionMode mode) { 
     mActionMode = null; 
    } 
}; 

ответ

9

как получить выбранный элемент

вы можете использовать ActionMode.setTag() в onItemLongClick передать выбранную позицию элемента в onActionItemClicked используя ActionMode.getTag() как:

mActionMode = ....; 
mActionMode.setTag(position); //<<< set selected row position 
view.setSelected(true); 

и набор выбранного элемента в onActionItemClicked:

@Override 
    public boolean onActionItemClicked(ActionMode mode, MenuItem item) { 
      int item_postion=Integer.parseInt(mode.getTag().toString()); 
      String str_item=listViewData.getAdapter().getItem(item_postion); 
      .... 
     }