Код работает не так как планировалось recyclerview
У меня был вопрос в котором описывается довольно сложноватая в плане реализации иерархия разметки. Если коротко, то есть фрагмент в котором лежит список и в этом списке элементами могут быть списки и linearLayout. Я хочу из фрагмента менять состояние элемента списка который является элементом самого главного списка (не уверен что понятно написал, если что в комментариях напишите что не понятно). Для этого я из фрагмента вызываю функцию адаптера который прикреплен к главному списку. Делаю это так:
listAdapterQid3.changeView()
в этом адаптере есть эта функция которая вызывает в свою очередь другую функцию которая находится в адаптере составляющего списка:
fun changeView(){
answersAdapter.itemEnabler(0)
}
и в главном списке вот функция itemEnabler:
fun itemEnabler(type: Int) {
when (type) {
0 -> {
for (i in 0 until itemCount) {
if (i != checkedPosition) {
notifyItemChanged(i, type)
}
}
}
1 -> {
for (i in 0 until itemCount) {
notifyItemChanged(i, type)
}
}
2 -> {
notifyItemChanged(checkedPosition, 2)
}
}
}
и там же в адаптере есть функция изменения состояния элемента списка:
override fun onBindViewHolder(holder: AnswerHolder, position: Int, payloads: MutableList<Any>) {
if (payloads.isNotEmpty()) {
when (payloads[0]) {
0 -> {
holder.answerBtn1.isEnabled = true
}
1 -> {
holder.answerBtn1.isEnabled = false
}
2 -> {
holder.answerBtn1.isChecked = false
}
}
} else {
super.onBindViewHolder(holder, position, payloads)
}
}
В чем суть проблемы: по логам было определено что все вызывается но почему-то элемент списка не становится доступным для нажатий. Для меня это не очень понятно, потому что все функции вызываются исправно и все срабатывает кроме включения элемента списка. Можно конечно сделать через интерфейсы но я не смог придумать правильную логику этих интерфейсов.