2011-11-28 61 views
0

我在代碼上看到了帶有複選框的列表視圖,但是如何檢查複選框的值? 我執行與選項卡的程序,其中一個選項卡與複選框ListView控件,代碼如下:如何檢查Android ListView中的複選框狀態

spec = tabHost.newTabSpec(OPTS_TAB_TAG).setIndicator("Options", 
        res.getDrawable(R.drawable.ic_tab_options)) 
       .setContent(new TabContentFactory() 
       { 
       public View createTabContent(String arg0) 
       { 

         DbAdapter databaseManager = new DbAdapter(BusTrackerBetaActivity.this); 
         databaseManager.open(); 

         List<String> BusLinesList = new ArrayList<String>(); 
         BusLinesList = databaseManager.toStringList(databaseManager.getAllBusLines(), 1); 

         String[] BusLinesArray = BusLinesList.toArray(new String[BusLinesList.size()]); 


        databaseManager.close(); 

        ListView ls1 = new ListView(BusTrackerBetaActivity.this); 
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(
          BusTrackerBetaActivity.this, 
         android.R.layout.simple_list_item_multiple_choice, 
         BusLinesArray); 
        ls1.setAdapter(adapter); 
        ls1.setOnCreateContextMenuListener(BusTrackerBetaActivity.this); 

        ls1.setItemsCanFocus(false); 
        ls1.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); 
        return ls1; 

       } 

      });  

它的正常工作,acctually我得到了實現從一些例子列表的這種方式,但我的問題是:如何檢查每個複選框的值(true或false)?

+1

選中此項[帶有複選框的ListView的完整示例](http://www.vogella.de/articles/AndroidListView/article.html) –

回答

1

您可以使用ListViewgetCheckedItemPositions函數來完成此操作。它將返回一個SparseBooleanArray對象,其中包含ListView中每個項目的已檢查狀態。循環訪問SparseBooleanArray以確定檢查哪些項目。

您將需要一個參考存到自己ListView對象的地方,這樣就可以輕鬆地日後訪問,當你需要確定檢查項目狀態。

SparseBooleanArray checkedItems = ls1.getCheckedItemPositions(); 
    if (checkedItems != null) 
     for (int i = 0; i < checkedItems.size(); i++) 
     { 
      if (checkedItems.valueAt(i)) 
      { 
       String s = ls1.getAdapter().getItem(checkedItems.keyAt(i)).toString(); 
       //s contains your checked item, checkedItems.keyAt(i) is the index of the checked item 
      } 

     }