簡體   English   中英

如何將 ViewBinding 與 RecyclerView 適配器與 Kotlin 中已經存在的內部 class 一起使用?

[英]How can I use ViewBinding with RecyclerView Adapter with an already existing inner class in Kotlin?

TodoAdapter.kt

class TodoAdapter (var todos:List<Todo>) : RecyclerView.Adapter<TodoAdapter.TodoViewHolder>(){

  inner class TodoViewHolder(itemView: View): RecyclerView.ViewHolder(itemView)

  override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): TodoViewHolder {

      val view= LayoutInflater.from(parent.context).inflate(R.layout.todo_layout, parent, false)
      return TodoViewHolder(view)

  }

  override fun onBindViewHolder(holder: TodoViewHolder, position: Int) {
      holder.itemView.apply {
      }

  }

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

上面是 Recycler View Adapter Class。

我已經有一個內部 class TodoAdapter。 我如何使用 ViewBinding 這個?

我要訪問視圖的布局文件是 todo_layout.xml

我假設您熟悉 ViewBinding。 以下是如何將 ViewBinding 與 RecyclerViewAdapter 一起使用。

這將是您的TodoAdapter.kt

class TodoAdapter (var todos:List<Todo>) : RecyclerView.Adapter<TodoAdapter.TodoViewHolder>() {

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

    override fun onBindViewHolder(holder: TodoViewHolder, position: Int) {
        holder.bind()
    }

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

    inner class TodoViewHolder(private val binding: TodoLayoutBinding) : RecyclerView.ViewHolder(binding.root) {
        fun bind(){
            binding.apply{
                // Assign Values
            }
        }
    }
}

現在在您的TodoViewHolder綁定 function 調用中,您可以訪問所有視圖。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM