Флажки в ListView - когда я выбираю первый, он проверяет последний и наоборот - PullRequest
7 голосов
/ 15 декабря 2011

Я установил ListView, который содержит флажок в каждой строке (вместе с TextView).По какой-то причине, когда я «проверяю» один из блоков, кажется, что он «проверяет» тот, который противоположен в ListView (т. Е. При выборе верхнего поля, нижний флажок становится выбранным, а верхний остается непроверенным.

Я понимаю, что здесь нет кода для работы, но мне просто интересно, если это общая проблема? Если нет, я могу попробовать опубликовать некоторый код. Спасибо!

1 Ответ

4 голосов
/ 15 декабря 2011

Представления перерабатываются в 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.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...