Представления перерабатываются в ListView.Вот почему некоторые проверяются, когда вы думаете, не должно быть.
Вот предложение: у флажка есть понятия не имею , какой элемент в вашем адаптере он представляет.Это просто флажок в строке в ListView.Вам нужно что-то сделать, чтобы «научить» строки, какой элемент в вашем наборе данных они отображают в данный момент.Таким образом, вместо использования чего-либо столь же простого, как массив String, в качестве данных для вашего адаптера, создайте новый объект модели, в котором будет храниться состояние флажка.Затем, прежде чем вернуть строку в getView()
, вы можете сделать что-то вроде:
//somewhere in your class
private RowData getData(int position) {
return(((MyAdapter)getListAdapter()).getItem(position));
}
//..then in your adapter in getView()
RowData object = getModel(position);
if(object.isChecked()) {
myCheckbox.setChecked(true);
} else {
myCheckbox.setChecked(false);
}
//then retun your view.