Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.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 如何从列表视图中查找所选复选框?_Android_Listview_Checkbox - Fatal编程技术网

Android 如何从列表视图中查找所选复选框?

Android 如何从列表视图中查找所选复选框?,android,listview,checkbox,Android,Listview,Checkbox,我有一个列表视图,每行都有一个复选框。我使用viewholder模式加载列表,如下所示: View view = convertView; if(view == null) { LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); view = inflater.inflate(R.l

我有一个列表视图,每行都有一个复选框。我使用viewholder模式加载列表,如下所示:

View view = convertView;
        if(view == null) {
            LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            view = inflater.inflate(R.layout.setting_list_item, null);

            ViewHolder viewHolder = new ViewHolder();
            viewHolder.cbCat = (CheckBox) view.findViewById(R.id.cbCat);

            view.setTag(viewHolder);
        }
        ViewHolder vh = (ViewHolder) view.getTag();
        vh.cbCat.setText(bt.getName());
但当我尝试选中复选框时,如下所示:

for(int i = lvCatList.getFirstVisiblePosition(); i < settingAdapter.getCount(); i++) {
            View v = lvCatList.getChildAt(i);
            CheckBox cbx = (CheckBox) v.findViewById(R.id.cbCat);

            if(cbx != null && cbx.isChecked()) {
                toast += " / " + settingAdapter.getItem(i).getName();
                Log.d("CHECKED", toast);
            }
只能获取可见的复选框。如果复选框在屏幕上不可见,则抛出异常

如何检查列表中的复选框是否已选中。?
}

请参考以下示例从listview获取选中项。

请参考以下示例从listview获取选中项。

选中复选框时,您可以将选中的复选框值添加到arraylist

List<String> SelectedBox = new ArrayList<String>();

View.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
    {
        if(isChecked)
            {
                SelectedBox.add(id);
            }
            else
            {
                SelectedBox.remove(id);
            }
    }
});

当您需要检查复选框是否已选中时,只需参考SelectedBox

即可在选中复选框时将选中的复选框值添加到arraylist中

List<String> SelectedBox = new ArrayList<String>();

View.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
    {
        if(isChecked)
            {
                SelectedBox.add(id);
            }
            else
            {
                SelectedBox.remove(id);
            }
    }
});

当您需要检查复选框是否选中时,只需参考SelectedBox

定义一个布尔值并用cbx的结果填充它。选中了吗?@Rexxo您能详细说明您的建议吗?因为我在屏幕上的不可见列表项中遇到异常。@Harish的链接很好。您的For循环是否首先工作?然后尝试删除cbx!=null。@Rexxo我已经在我的应用程序中实现了它。它工作正常。定义一个布尔值并用cbx的结果填充它。选中了吗?@REXO你能详细说明你的建议吗?因为我在屏幕上的不可见列表项中遇到异常。@Harish的链接很好。您的For循环是否首先工作?然后尝试删除cbx!=null。@Rexxo我已经在我的应用程序中实现了它。它工作正常。