Adapter RecyclerView не видит root

Я изменил макет item xml файла с androidx.constraintlayout.widget.ConstraintLayout на layout, после чего root в FoodItemViewHolder стал выделяться красным:

class FoodItemAdapter(private val context: Context, private val names: List<String>, private val text: List<String>)
    : RecyclerView.Adapter<FoodItemAdapter.FoodItemViewHolder>() {


    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): FoodItemViewHolder {
        val binding = FoodItemLayoutBinding.inflate(LayoutInflater.from(context),parent,false)
        return FoodItemViewHolder(binding)
    }

    override fun onBindViewHolder(holder: FoodItemViewHolder, position: Int) {
        val foodItem = names[position]
        val foodItem2 = text[position]
        holder.bind(foodItem, foodItem2)
    }

    override fun getItemCount(): Int {
        return names.size
    }


    class FoodItemViewHolder(val foodItemLayoutBinding: FoodItemLayoutBinding)
        : RecyclerView.ViewHolder(foodItemLayoutBinding.root){

        private val binding = foodItemLayoutBinding

        fun bind(foodItem: String, foodItem2: String){
            binding.foodItemNameTV.text = foodItem
            binding.foodItemPriceTV.text = foodItem2
        }

    }
}

введите сюда описание изображения


Ответы (1 шт):

Автор решения: ЮрийСПб

Чтобы DataBinding заработал - надо его явно включить в build.gradle(module app)

android {
    ...
    buildFeatures {
        dataBinding true
    }
}

Вообще завязываться на гугловые либы, использующие кодогенерацию по XML - плохая идея в том смысле, что часто что-то ломается так, что не выдаёт каких-то понятных ошибок. Как в этом случае, так и в случае либы для навигации (там это пытаются исправить через либу SafeArgs). Даже ViewBinding иногда ломается страшным образом (у меня, например, полпроекта сломалось из-за пустого коммента в разметке так, что студия не подключала стороннюю либу странным образом. Ошибку нашёл методом везения).

ИМХО - лучше не использовать либы от гугла с кодогенерацией по XML.

→ Ссылка