ListView - CHOICE_MODE_MULTIPLE_MODAL - выбираются случайные элементы - PullRequest
0 голосов
/ 31 декабря 2011

По сути, у меня есть ошибка, из-за которой некоторые из детей моего списка отображаются выбранными, хотя на самом деле это не так.Например, если я введу ActionMode и выберу только первый дочерний элемент, несколько других дочерних элементов будут отображаться так, как будто я их выбрал, но на самом деле они не выбраны.Почему это происходит?

public void onItemCheckedStateChanged(ActionMode mode, int position,
            long id, boolean checked) {
        final int checkedCount = lv.getCheckedItemCount();
        mSelectedConvCount.setText(Integer.toString(checkedCount));
        if (checked) {
            lv.getChildAt(position).setBackgroundColor(
                    Color.BLUE);
        } else {
            lv.getChildAt(position).setBackgroundColor(
                    Color.TRANSPARENT);
        }
    }
}

1 Ответ

1 голос
/ 21 ноября 2012

Помните: в ListView все, что вы устанавливаете или изменяете в любых дочерних представлениях, должно устанавливаться при каждом их отображении;все, что вы делаете в предоставленном коде, это устанавливаете его изначально.Это означает, что ваш адаптер также должен setBackgroundColor в зависимости от ситуации, например, в bindView().В противном случае при повторном использовании представления оно сохранит предыдущий цвет фона и будет отображаться выбранным, если это не так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...