1

各行にチェックボックスがあるリストビューがあります。次のように、ビューホルダー パターンを使用してリストをロードしています。

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

表示されているチェックボックスのみを取得できます。チェックボックスが画面に表示されていない場合は、例外がスローされます。

リスト内のチェックボックスがチェックされているかどうかを確認する方法。
}

4

2 に答える 2

2

リストビューからチェックされた項目を取得するには、次の例を参照してください。チェックボックス付きのリストビュー

于 2012-10-12T08:35:54.493 に答える
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 を参照してください

于 2012-10-12T08:48:36.867 に答える