2011-11-28 90 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 
      } 

     }