CheckBox.setChecked () выполняется, но не отображается на экране - PullRequest
0 голосов
/ 23 мая 2018

Я использую onClickListener для текстового представления для setCheck () для флажка и сохраняю одно значение при очистке последнего проверенного элемента в itemStateArray, который является SparseBooleanArray.Код выполняется, но флажок не отображается.

textView.setOnClickListener(v -> {
            int adapterPosition = getAdapterPosition();
            if (!itemStateArray.get(adapterPosition, false)) {
                if (first) {
                    checkBox.setChecked(true);
                    first = false;
                    lastChecked = checkBox;
                } else {
                    if (checkBox.isChecked() && lastChecked != null) {
                        lastChecked.setChecked(false);
                        checkBox.setChecked(true);
                        lastChecked = checkBox;
                    }
                }
                itemStateArray.clear();
                itemStateArray.put(adapterPosition, true);

            } else {
                checkBox.setChecked(false);
                itemStateArray.clear();
                itemStateArray.put(adapterPosition, false);

            }
        });

Я настраиваю слушателя на текстовое представление, так как хочу щелкнуть более крупное текстовое представление по сравнению с меньшим флажком сбоку экрана.

После нажатия кнопкиэлемент и прокрутка вниз и обратно, элемент отображается как проверенный. Я устанавливаю флажок, как проверено в onBindViewHolder со следующим кодом:

holder.bind(position);

Функция привязки, которую я передаюотмеченные позиции:

void bind(int position) {
            if (!itemStateArray.get(position, false)) {
                checkBox.setChecked(false);
            } else {
                checkBox.setChecked(true);
                lastChecked = checkBox;
            }
        } 

анимация флажка не отображается на экране.

1 Ответ

0 голосов
/ 23 мая 2018

Вы работаете с listView / RecyclerView, верно?Я думаю, что лучший способ добиться этого - сказать представлению обновить эту строку, используя метод

recyclerView.notifyItemChanged(int)

, где int - это позиция строки, в которой устанавливается флажок che.

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