Я справился с проблемой с помощью пользовательского адаптера bindView
, я создал ArrayList<Integer>
переменную
ArrayList<Integer> mCheckedItems = new ArrayList<Integer>();
и В bindView
я установил checkedchangelistener
на флажок, чтобы увидеть, был ли флажок установлен или нет. Если это было проверено, я помещал идентификатор из базы данных, чтобы курсор попал в mCheckedItems Array
адаптер:
public class CheckAdapter extends SimpleCursorAdapter{
Context context;
public CheckAdapter(Context context, int layout, Cursor c,String[] from, int[] to,int flag) {
super(context, layout, c, from, to);
this.context = context;
}
@Override
public void bindView(View view,Context context,Cursor cursor){
final String name = cursor.getString(cursor.getColumnIndex(BowlersDB.NAME));
final int id = cursor.getInt(cursor.getColumnIndex(BowlersDB.ID));
TextView tv = (TextView)view.findViewById(R.id.nameCheckTV);
tv.setText(name);
CheckBox cb = (CheckBox)view.findViewById(R.id.checkBox1);
cb.setOnCheckedChangeListener(new OnCheckedChangeListener(){
@Override
public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
if(isChecked){
mCheckedItems.add(id);
}else if(!isChecked){
for(int i=0; i< mCheckedItems.size(); i++){
if(mCheckedItems.get(i) == id){
mCheckedItems.remove(i);
}
}
}
}
});
}
После того, как идентификатор был вставлен в массив, я использовал список массивов, чтобы использовать их так, как мне нужно