Хочется возможно странного: организовать перелистывание статических страниц (отдельные файлы разметки) с помощью ViewPager2, без создания фрагментов. Что-то вроде этого:
class ModbusPageAdapter(private val binding: ViewBinding, private val pages: List<ViewBinding>) : RecyclerView.Adapter<ModbusPageAdapter.ModbusPageHolder>() {
var prevPosition: Int = 0
class ModbusPageHolder(binding: ViewBinding): RecyclerView.ViewHolder(binding.root)
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ModbusPageHolder {
return ModbusPageHolder(binding)
}
override fun getItemCount(): Int {
return pages.size
}
override fun onBindViewHolder(holder: ModbusPageHolder, position: Int) {
val page = pages[position]
pages[prevPosition].root.visibility = View.INVISIBLE
page.root.visibility = View.VISIBLE
prevPosition = position
}
}
Т.е. в основном коде создаю основной binding для "контейнера" и список binding-ов для страниц, их передаю в адаптер viewpager-а. Однако это не работает, т.к. holder выбрасывает исключение "ViewHolder views must not be attached when created". Если внутри адаптера использовать не binding, а "надувать" из R.layout, то естественно, объекты внутри viewpager-а и в основном коде будут разными. Так вот: как их всех подружить?
pages. Какую-то сомнительную архитектуру вы реализуете. Но если на то пошло - задействуйте механизм viewType: https://ru.stackoverflow.com/a/470214/11515 – woesss Feb 15 '24 at 12:43