У меня есть просмотрщик, который содержит список предопределенных элементов макета пользовательского интерфейса.В предопределенном макете пользовательского интерфейса есть значок, который виден, если элемент является типом проекта.Если это не тот тип, это не видно.Когда пользователь входит в режим выбора, я установил пользовательскую переменную в адаптере, чтобы скрыть этот значок на всех элементах, однако он не работает.
Я пытался использовать обратный вызов DiffUtil для обновления содержимого (т. Е. Возвращая falseдля contentsIsSame, когда он имеет видимый значок при изменении состояния), и я вижу, что он мерцает, но только для одной строки, и он возвращается.
Я пытался использовать notifydatasetchanged, также invalidateAll, ни одна из них не работает.
В Интернете я искал что-то похожее на мою проблему, но не смог найти ни одного работающего решения.
В предопределенном XML-макете пользовательского интерфейса для каждой строки:
<variable
name="isSelecting"
type="boolean"/>
Затем в привязке видимости (пропущены другие атрибуты):
<ImageView
app:visibleGone="@{project.isIconVisible && !isSelecting}"/>
В коде класса RecyclerView.Adapter, который создает список:
listItemBinding = DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()), R.layout.item_project_list, parent, false);
Когда кнопка выборанажата, это называется:
public void setIsSelecting(boolean isSelecting){
listItemBinding.setIsSelecting(isSelecting);
Здесь я попробовал различные методы, такие как listItemBinding.invalidateAll ().
Если я вручную установил isSelectiНапример, true или false, до того, как список заполнен, он правильно показывает / скрывает значки.Он просто не обновляется при изменении.