【问题标题】:android checkbox recyclerview using kotlin使用kotlin的android复选框recyclerview
【发布时间】:2020-11-12 23:23:09
【问题描述】:

我想问一些关于我的代码的问题。

所以,我想检索我在复选框 recyclerview 中选择的数据,然后将其放入变量数组列表中。然后当我单击下一步按钮时,我可以在主代码中使用变量数组列表,然后我可以移动到下一页。你能帮我在我的编码中添加那个代码吗?

反正我用的是 kotlin,所以我需要代码 kotlin

这里是我的主要代码

 private fun getData() {
    mDatabaseReference.addValueEventListener(object : ValueEventListener {
        override fun onCancelled(databaseError: DatabaseError) {
            Toast.makeText(this@ChooseCategoryActivity, ""+databaseError.message, Toast.LENGTH_SHORT).show()
        }

        override fun onDataChange(dataSnapshot: DataSnapshot) {
            dataCategory.clear()


            for(getdataSnapshot in dataSnapshot.getChildren()) {
                Log.i("dataKey", getdataSnapshot.key.toString())
                val kategori = getdataSnapshot.getValue(Kategori::class.java)
                dataCategory.add(kategori!!)
            }

            rv_user_kategori.adapter = UserCategoryAdapter(dataCategory) {

            }
        }

    })

这里是我的适配器 recyclerview

class UserCategoryAdapter(private var data: List<Kategori>, private var listener: (Kategori) -> Unit) : RecyclerView.Adapter<UserCategoryAdapter.ViewHolder>() {


lateinit var ContextAdapter : Context

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
    val layoutInflater = LayoutInflater.from(parent.context)
    ContextAdapter = parent.context
    val inflatedView = layoutInflater.inflate(R.layout.layout_row_kategori, parent, false)
    return ViewHolder(inflatedView)
}

override fun getItemCount(): Int = data.size

override fun onBindViewHolder(holder: UserCategoryAdapter.ViewHolder, position: Int) {
    holder.bindItem(data[position], listener,ContextAdapter, position)
}

class ViewHolder(v: View) : RecyclerView.ViewHolder(v) {
    private val namaKategori:TextView = v.findViewById(R.id.txt_row_kategori)
    var checkbox:CheckBox = v.findViewById(R.id.txt_row_kategori)


    fun bindItem(data: Kategori, listener: (Kategori) -> Unit, context : Context, position : Int) {
        namaKategori.text = data.nama

        itemView.setOnClickListener {
                listener(data)

        }
    }
}

}

请帮助我找到解决方案。

【问题讨论】:

  • 我是否理解正确,当有人选中或取消选中您的回收站视图项中的复选框时,您想通知您的活动/片段?
  • 是的,就像那样。当我在我的复选框 recyclerview 上检查一些项目时,我想在复选框检查时获取文本并且该文本移动到主要活动

标签: android checkbox android-recyclerview


【解决方案1】:

您的侦听器当前仅返回 Kategori。使其还返回列表中项目的位置和/r 复选框的状态。您可以通过Checkbox.isChecked 获取复选框的状态。

【讨论】:

    【解决方案2】:

    要使用监听器,你需要添加invoke,所以流程应该是:

    您的适配器声明

    class UserCategoryAdapter(private var data: List<Kategori>, private var listener: (Kategori) -> Unit) : RecyclerView.Adapter<UserCategoryAdapter.ViewHolder>()
    

    然后在您的绑定中,您也可以通过构造函数发送侦听器

    holder.bindItem(data[position], listener,ContextAdapter, position)
    

    一旦您在ViewHolder 中并且想要检测状态更改侦听器,您需要调用它

    itemView.setOnClickListener { listener.invoke(data) }
    

    【讨论】:

    • 以及如何获取我在主要活动中选中的复选框的文本?
    • 你在调用中传递它,对吧?你有data
    • 你解决了吗?为了帮助其他人,如果这有助于您随时投票并将其标记为正确答案。谢谢:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-02
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    相关资源
    最近更新 更多