各行にチェックボックスがあるリストビューがあります。次のように、ビューホルダー パターンを使用してリストをロードしています。
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);
}
表示されているチェックボックスのみを取得できます。チェックボックスが画面に表示されていない場合は、例外がスローされます。
リスト内のチェックボックスがチェックされているかどうかを確認する方法。
}