Вы можете заменить свой подход массивом логических значений.Например, если у вас есть 15 элементов в массиве, вы можете создать логическое значение [15] и изменить состояние различных позиций, когда пользователь нажимает флажок, а также установить начальное состояние в начале.
Не идеальный пример, но я надеюсь, что вы поймете идею:
public class YourActivity extends Activity {
protected boolean[] checkStates;
protected void onCreate(android.os.Bundle savedInstanceState) {
//... Some of your code where you get a list of you objects
checkStates = new boolean[list.size()];
// As an example, let's check some of them:
checkStates[3] = true;
checkStates[7] = true;
//.. Something more
};
SimpleAdapter adapter = new SimpleAdapter(this, list, R.layout.rowsecond, new String[] {"icon", "name"}, new int[] {R.id.image1, R.id.text1}) {
public View getView(int position, View convertView, ViewGroup parent) {
final View v = super.getView(position, convertView, parent);
boxer = (CheckBox)v.findViewById(R.id.checkbox);
boxer.setTag(position);
boxer.setOnCheckedChangeListener(checkedChangeListener);
boxer.setChecked(checkStates[position]);
return v;
}
private final OnCheckedChangeListener checkedChangeListener = new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(final CompoundButton buttonView, final boolean isChecked) {
final Integer position = (Integer) buttonView.getTag();
checkStates[position] = isChecked;
}
};
};
}
Не забудьте вызвать yourAdapterInstance.notifyDataSetChanged (), если выпытаемся обновить состояния флажков извне проверкиChangeListener и после начального метода onCreate ();