2017-03-16 1 views
0

私はリストビューを持っており、リストを長時間クリックするとメニュー(コンテキストアクションモード)を表示します。私が最初にクリックすると動作しませんが、それ以外の時間は動作します。 onItemLongClickは常に呼び出されますが、コンテキストアクションモードは2回目にのみ開始されます。Android:setMultiChoiceModeListener(コンテキストアクションモード)はすぐに呼び出されません

public void onActivityCreated(Bundle savedInstanceState) 
{ 
    super.onActivityCreated(savedInstanceState); 

    stringList = new LinkedList<>(); 
    stringList.add("A"); 
    stringList.add("B"); 
    stringList.add("C"); 
    stringList.add("D"); 
    stringList.add("E"); 
    listView = getListView(); 
    arrayAdapter = new ArrayAdapter<String>(getActivity(),R.layout.support_simple_spinner_dropdown_item,stringList); 
    listView.setAdapter(arrayAdapter); 

    final AbsListView.MultiChoiceModeListener choiceModeListener = new AbsListView.MultiChoiceModeListener() 
    { 
     @Override 
     public void onItemCheckedStateChanged(ActionMode mode, int position, long id, boolean checked) 
     { 
      Toast.makeText(getActivity(),position+"",Toast.LENGTH_SHORT).show(); 
     } 

     @Override 
     public boolean onCreateActionMode(ActionMode mode, Menu menu) 
     { 
      MenuInflater menuInflater = mode.getMenuInflater(); 
      menuInflater.inflate(R.menu.contentmenu2,menu); 
      return true; 
     } 

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

     @Override 
     public boolean onActionItemClicked(ActionMode mode, MenuItem item) { 
      return false; 
     } 

     @Override 
     public void onDestroyActionMode(ActionMode mode) { 

     } 
    }; 

    listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() 
    { 
     @Override 
     public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) 
     { 
      listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL); 
      listView.setMultiChoiceModeListener(choiceModeListener); 
      Toast.makeText(getActivity(),"LONG CLICK",Toast.LENGTH_SHORT).show(); 
      return true; 
     } 
    }); 

} 

答えて

0

が、私はこのコードの一部modyfing問題バイパス: ここに私のコードで、私はそれを2回呼び出すので、コンテキストメニューが起動します。このように

listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL); 
    listView.setMultiChoiceModeListener(choiceModeListener); 

    listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() 
    { 
     @Override 
     public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) 
     { 
      listView.setMultiChoiceModeListener(choiceModeListener); 
      return true; 
     } 
    }); 

を、私は理解していませんなぜ私はそれを2回呼び出さなければならないのですか...

関連する問題