2011-11-22 48 views
3

我已閱讀了很多關於列表視圖和複選框的主題。很多人使用CheckedTextView或擴展它。我想實現一個自定義列表視圖與複選框行爲就像在Android的郵件應用程序(薑餅,ICS):只有複選框可檢查,而不是整行。另外在ICS上,操作欄顯示檢查列表項目的數量。自定義列表視圖與gmail應用程序中的複選框行爲

任何人都可以請給我看一些代碼或指向正確的方向嗎?謝謝!

回答

4

結帳出API演示表樣品16多選擇模式

public class List16 extends ListActivity { 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    ListView lv = getListView(); 
    lv.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL); 
    lv.setMultiChoiceModeListener(new ModeCallback()); 
    setListAdapter(new ArrayAdapter<String>(this, 
      android.R.layout.simple_list_item_activated_1, 
      Cheeses.sCheeseStrings)); 
} 

@Override 
protected void onPostCreate(Bundle savedInstanceState) { 
    super.onPostCreate(savedInstanceState); 
    getActionBar().setSubtitle("Long press to start selection"); 
} 

private class ModeCallback implements ListView.MultiChoiceModeListener { 

    public boolean onCreateActionMode(ActionMode mode, Menu menu) { 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.list_select_menu, menu); 
     mode.setTitle("Select Items"); 
     return true; 
    } 

    public boolean onPrepareActionMode(ActionMode mode, Menu menu) { 
     return true; 
    } 

    public boolean onActionItemClicked(ActionMode mode, MenuItem item) { 
     switch (item.getItemId()) { 
     case R.id.share: 
      Toast.makeText(List16.this, "Shared " + getListView(). 
      getCheckedItemCount() + 
        " items", Toast.LENGTH_SHORT).show(); 
      mode.finish(); 
      break; 
     default: 
      Toast.makeText(List16.this, "Clicked " + item.getTitle(), 
        Toast.LENGTH_SHORT).show(); 
      break; 
     } 
     return true; 
    } 

    public void onDestroyActionMode(ActionMode mode) { 
    } 

    public void onItemCheckedStateChanged(ActionMode mode, 
      int position, long id, boolean checked) { 
     final int checkedCount = getListView().getCheckedItemCount(); 
     switch (checkedCount) { 
      case 0: 
       mode.setSubtitle(null); 
       break; 
      case 1: 
       mode.setSubtitle("One item selected"); 
       break; 
      default: 
       mode.setSubtitle("" + checkedCount + " items selected"); 
       break; 
     } 
    } 

} 
} 
+3

感謝您的回覆!是否有機會在預蜂窩設備上實現該行爲? – felix

+0

Gmail listview可以進行多重檢查,並且在多次檢查時,它可以點擊以顯示細節。 List16演示仍然沒有解決問題 – uudashr

相關問題