RecyclerView.AdapterでViewBindingを使用する方法?

A1M:

私は交換しViewBindingsを使用することができfindViewById、この典型的にRecyclerView.Adapter初期化コード?私は設定できませんbindingViewHoldersは、セル当たり異なるなどのオブジェクトにvalのを。

class CardListAdapter(private val cards: LiveData<List<Card>>) : RecyclerView.Adapter<CardListAdapter.CardViewHolder>() {

    class CardViewHolder(val cardView: View) : RecyclerView.ViewHolder(cardView)

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

    override fun onBindViewHolder(holder: CardViewHolder, position: Int) {
        val title = holder.cardView.findViewById<TextView>(R.id.title)
        val description = holder.cardView.findViewById<TextView>(R.id.description)
        val value = holder.cardView.findViewById<TextView>(R.id.value)
        // ...
    }
A1M:

私は2つのオプションが見つかりました:

使用bindBindingクラスのメソッドを

override fun onBindViewHolder(holder: CardViewHolder, position: Int) {
        val binding = CardBinding.bind(holder.cardView)
        // binding.title ...

または添付bindingViewHolder代わりのビューに

    class CardViewHolder(val binding: CardBinding) : RecyclerView.ViewHolder(binding.root)

その後にアクセスします。

    holder.binding.title

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=33697&siteId=1