Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Android上检查ListView中的复选框状态_Android_Android Layout - Fatal编程技术网

如何在Android上检查ListView中的复选框状态

如何在Android上检查ListView中的复选框状态,android,android-layout,Android,Android Layout,我的代码中有一个带有复选框的列表视图,但是如何检查复选框的值? 我正在用选项卡实现一个程序,其中一个选项卡上有带复选框的ListView,代码如下: spec = tabHost.newTabSpec(OPTS_TAB_TAG).setIndicator("Options", res.getDrawable(R.drawable.ic_tab_options)) .setContent(new TabContentFactory()

我的代码中有一个带有复选框的列表视图,但是如何检查复选框的值? 我正在用选项卡实现一个程序,其中一个选项卡上有带复选框的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;

                }

            });     
spec=tabHost.newTabSpec(OPTS\u TAB\u TAG).setIndicator(“选项”,
res.getDrawable(R.drawable.ic_选项卡_选项))
.setContent(新选项卡ContentFactory()
{
公共视图createTabContent(字符串arg0)
{
DbAdapter databaseManager=新的DbAdapter(BusTrackerBetaActivity.this);
databaseManager.open();
List BusLinesList=新建ArrayList();
BusLinesList=databaseManager.toStringList(databaseManager.getAllBusLines(),1);
字符串[]BusLinesArray=BusLinesList.toArray(新字符串[BusLinesList.size()]);
databaseManager.close();
ListView ls1=新的ListView(BusTrackerBetaActivity.this);
ArrayAdapter适配器=新的ArrayAdapter(
巴斯特拉克贝塔,这个,
android.R.layout.simple\u list\u item\u多选,
巴士线;
ls1.设置适配器(适配器);
ls1.setOnCreateContextMenuListener(BusTrackerBetaActivity.this);
ls1.setItemsCanFocus(false);
ls1.setChoiceMode(ListView.CHOICE\u MODE\u MULTIPLE);
返回ls1;
}
});     

它工作得很好,实际上我从一些示例中获得了实现列表的方法,但我的问题是:如何检查每个复选框的值(真或假)?

您可以使用
ListView
getCheckEditPositions
函数来完成此操作。它将返回一个
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
            }

        }
SparseBooleanArray checkedItems=ls1.getCheckedItemPositions();
if(checkedItems!=null)
对于(int i=0;i
检查此项