如何从列表视图中找到所选的复选框?

时间:2012-10-12 08:29:47

标签: android listview checkbox

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

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);
            }

只能获得可见的复选框。如果复选框在屏幕中不可见,则会抛出异常。

如何检查列表中的chekbox是否被检查             }

2 个答案:

答案 0 :(得分:2)

请参阅以下示例以从listview获取已检查项目。ListView with checkbox

答案 1 :(得分:2)

选中复选框

时,可以将选中的复选框值添加到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