Kotlinを介してAndroidでViewBindingを使用したRecrutionerViewの使用

4469 ワード

RecyclerView Androidで最も使用されるライブラリの一つです.この記事では、ビューバインディングと組み合わせて使用する方法を示します.

依存


必要な依存関係を以下に示します:
  • ビューバインディングbuild.gradle モジュールのファイル
  • あなたのホストフラグメント/アクティビティに追加された
  • RefererViewのアダプタークラスでホストフラグメント/アクティビティを展開するXMLレイアウト.
  • 場合は、ビューバインディングのトピックに慣れていない場合は、私の記事をチェックアウトすることができます.


    実装


    アダプターのクラスを作り、それを拡張しますRecyclerView.Adapter インスタンス化中のクラス.
    これにより、1に拡張するカスタムViewHowageクラスを作成する必要がありますRecyclerView.ViewHolder そして、レイアウトファイルのルートを取得するために使用される引数として、レイアウトの束縛を取ります.
    class RVExample(val list: ArrayList<Example>) : RecyclerView.Adapter<RVExample.ViewHolder>() {
    
        inner class ViewHolder(val binding: RVExampleBinding) : RecyclerView.ViewHolder(binding.root)
    }
    
    上の例のコードでは、リストをクラスコンストラクターとして受け入れています.このリストはタイプ1の複数の要素を持つことになっていますExample これでtext 後で使用するキーとして.

    Notice how the inner class's constructor is of type RVExampleBinding. You need to make sure that you use the layout resource you created earlier to be consumed by the Adapter class.


    さて、アダプタの設定を完了するためにクラス関数をオーバーライドする必要があります.
    オーバーライドする最初のメソッドはonCreateViewHolder . この関数は、ViewHolder 上記のクラス.クラスコンストラクタとして必要なものを渡す必要がありますBinding , レイアウトを展開しながらパスを使用します.
    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
        return ViewHolder(
            RvExampleBinding.inflate(
                LayoutInflater.from(parent.context),
                parent,
                false
            )
        )
    }
    
    オーバーライドする2つ目の方法はgetItemCount . この関数は、アダプタークラスで引数として受け入れたリストのサイズを返します.
    override fun getItemCount(): Int {
        return list.size
    }
    
    3番目と最後のメソッドをオーバーライドしますonBindViewHolder . このメソッドでは、holder 結合を使用してGUIコンポーネントにアクセスする引数として受け入れられた変数.position 引数はリスト内の特定の位置にある要素にアクセスするのに役立ちます.
    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
        holder.binding.tvExample.text = list[position].text
    }
    
    アダプタークラスはこちらRVExample.kt 以下のようになります.
    package dev.theimpulson.rvexample
    
    import android.view.LayoutInflater
    import android.view.ViewGroup
    import androidx.recyclerview.widget.RecyclerView
    import dev.theimpulson.rvexample.databinding.RvExampleBinding
    import dev.theimpulson.rvexample.Example
    
    class RVExample(val list: ArrayList<Example>) : RecyclerView.Adapter<RVExample.ViewHolder>() {
    
        inner class ViewHolder(val binding: RvExampleBinding) : RecyclerView.ViewHolder(binding.root)
    
        override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
            return ViewHolder(
                RvExampleBinding.inflate(
                    LayoutInflater.from(parent.context),
                    parent,
                    false
                )
            )
        }
    
       override fun onBindViewHolder(holder: ViewHolder, position: Int) {
        holder.binding.tvExample.text = list[position].text
        }
    
        override fun getItemCount(): Int {
            return list.size
        }
    }
    
    そしてそれです.これでビューバインディングを使用して再利用ErrorViewビューを使用し、ビューバインディングによって提供されるnullとタイプの安全性を得ることができます.