Я работаю над экраном, на котором мне нужно дважды отображать одну и ту же коллекцию элементов. Я использую два RecyclerView
, каждый с разными экземплярами одного и того же Adapter
Помимо двух RecyclerViews
на экране у меня есть кнопка continue
, чтобы go перейти к следующему экран.
Я хочу наложить некоторые ограничения на кнопку, чтобы пользователь не мог перейти к следующему экрану, если он не выберет элемент из каждого RecyclerView
Когда пользователь нажимает на элемент, вызывается следующий метод.
fun setSelection(item: Item) {
list.forEach {
it.isSelected = false
if (it.id == item.id) it.isSelected = true
}
notifyDataSetChanged()
}
И чтобы проверить, есть ли в списке хотя бы один выбранный элемент, я использую это:
fun isAnySelected(): Boolean {
return list.any { item -> item.isSelected }
}
В кнопке clickListener
Я добавил эту проверку:
if ((first_recycler.adapter as CustomAdapter).isAnySelected() &&
(second_recycler.adapter as CustomAdapter).isAnySelected())
{ //go to next screen }
else{
// select an item before continue }
Моя проблема в том, что если я выберу элемент только из одного RecyclerView
, когда я нажму на кнопку continue
, оба они вернут true
.
Почему (second_recycler.adapter as CustomAdapter).isAnySelected()
возвращает true
, если вызывается только
(first_massage_display.mdl_recycler.adapter as MassageAdapter).setSelection(item)
?