ListAdapter で SparseBooleanArray を作成します
private SparseBooleanArray checkStatus;
この SparseBooleanArray は、チェックされた項目を格納します。getView で次の操作を行います
@Override
public View getView(int position, View view, ViewGroup parent) {
ViewCache viewCache;
if (view == null){
viewCache = new ViewCache();
view = layoutInflater.inflate(R.layout.list_box, null, false);
viewCache.checkBox = view.findViewById(R.id.check_box);
viewCache.checkBox.setOnCheckedChangeListener(onCheckedChangeListener);
//other views in the list box
...........
}
vewCache = (ViewCache)view.getTag();
viewCache.checkBox.setTag(position);
viewCache.checkBox.setChecked(isChecked(position));
//set other views
........
}
これはViewCacheクラスです
private static class ViewCache{
CheckBox checkBox;
//other views in the list box
.......
}
このメソッドは、位置がチェックされているかどうかをチェックします
private boolean isChecked(int position){
return checkStatus.get(position, false);
}
これは onCheckChangeListener です
CompoundButton.OnCheckedChangeListener onCheckedChangeListener = new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
checkStatus.put(((Integer)compoundButton.getTag()), b);
}
};
最後に、チェックされた項目を SparseBooleanArray checkStatus から取得できます。それがあなたを助けると思います。