Привязка к просмотру.getRoot().getLayoutParams() всегда возвращает нуль

#android #android-jetpack #android-viewbinding

#Android #android-реактивный ранец #android-привязка к просмотру

Вопрос:

Когда я использую привязку к просмотру в моем RecyclerView.Такой адаптер:

 override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
    val layoutInflater = LayoutInflater.from(parent.context)
    val itemView1 = MyItemBinding.inflate(layoutInflater).root
    val itemView2 = layoutInflater.inflate(R.layout.my_item, parent, false)
    val itemView3 = MyItemBinding.bind(itemView2).root
    return ViewHolder(itemView1)
}
 

itemView1 LayoutParams всегда имеет значение null — игнорирует атрибуты в xml, а itemView2 LayoutParams amp; itemView3 работает нормально.
Так это ошибка для привязки к просмотру ::inflate?

Ответ №1:

Параметры макета берутся из родительского макета, и если вы раздуваете без родительского макета, параметров макета не будет. Используйте перегрузку, которая принимает родительский макет:

 val itemView1 = MyItemBinding.inflate(layoutInflater, parent, false).root
 

(Было бы неплохо также захватить ссылку на привязку, а не выбрасывать ее сразу.)