2

我試圖在我的應用程序中實現上下文操作欄。我擴展了一個ListFragment,並且我定義了一個自定義ArrayAdapter和列表項xml。點擊項目工作正常,背景顏色在列表項上發生變化。我遇到麻煩的地方是選擇多個項目時。上下文動作欄出現了,我可以告訴我實際上是在我觸摸它們時選擇了項目,因爲我正在記錄哪些項目被選中,但列表項目上的背景突出顯示顏色不會改變!好像其他人在使用Fragments API時也遇到了這個問題,並且他們想出了一些破解方法來使其正常工作。但是,我想知道是否有人對我的列表爲什麼不顯示選定項目有明確的答案。ListFragment多選不顯示選擇

良好的措施,這是我的代碼:

ListView list = getListView(); 
    list.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL); 
    list.setSelector(R.drawable.list_selector); 

    // configure contextual action bar 
    list.setMultiChoiceModeListener(new AbsListView.MultiChoiceModeListener() { 
     @Override 
     public void onItemCheckedStateChanged(ActionMode actionMode, int position, long id, boolean b) { 
      Log.i("debug", "item " + position + " changed state"); 
     } 

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

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

     @Override 
     public boolean onActionItemClicked(ActionMode actionMode, MenuItem item) { 
      switch (item.getItemId()) { 
       case R.id.delete: 
        Log.i("debug", "delete stuff"); 
        return true; 
       default: 
        return false; 
      } 
     } 

     @Override 
     public void onDestroyActionMode(ActionMode actionMode) { 

     } 
    }); 
+1

不要忘記接受答案。 –

回答

4

我提供一個背景選擇我的自定義列表項視圖。

<selector xmlns:android="http://schemas.android.com/apk/res/android" 
    android:exitFadeDuration="@android:integer/config_mediumAnimTime"> 
<item android:state_activated="true" android:drawable="@drawable/number_bg_pressed" /> 
<item android:drawable="@android:color/transparent" /> 

我指的是APIdemos查看/列表/ List16例子。

+1

是android:state_activated sticky多選列表? –

+1

' – wang

+0

我使用ListView,而不是ListFragment,但我認爲它會一樣。我從兩個可繪製的內部android佈局文件複製上面的代碼片段。它爲ListView中的每個項目視圖設置背景。它具有基本測試的android默認樣式。 – wang

0

當我設置SimpleCursorAdapter時,我使用android.R.layout.simple_list_item_activated_1進行佈局。自定義主題可能是更好的解決方案。在我的情況下,我有一個靜態方法來檢索取決於android api版本的佈局。