繁体   English   中英

RecyclerView 项目点击在模拟器上工作,但在 kotlin 中不在物理上

[英]RecyclerView item click is working on emulator but not on physical in kotlin

我有这个 function 来设置 Recyclerview:

fun setUpRecyclerview() {
    clickToPatch()
    mAdapter.updateData(plannersList)
    recyclerView!!.layoutManager =
        LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false)
    recyclerView?.adapter = mAdapter
    swipeToDelete()

}

这是点击补丁 function:

fun clickToPatch() {
    recyclerView?.addOnItemTouchListener(object : RecyclerView.SimpleOnItemTouchListener() {
        var downTouch = false
        override fun onInterceptTouchEvent(rv: RecyclerView, e: MotionEvent): Boolean {
            when (e.action) {
                MotionEvent.ACTION_DOWN -> downTouch = true
                MotionEvent.ACTION_UP -> if (downTouch) {
                    downTouch = false
                    recyclerView!!.findChildViewUnder(e.x, e.y)?.let {
                        val position = rv.getChildAdapterPosition(it)
                        val id: Int = mAdapter.plannersList?.get(position)!!.id
                        showPatchIbadahDialog(id)
                    }
                }
                else -> downTouch = false
            }
            return super.onInterceptTouchEvent(rv, e)
        }
    })

}

因此,当我在模拟器中单击该项目时,它工作正常并且我可以修补该项目但是当我尝试在物理手机上单击该项目时,没有任何反应并且单击该项目没有响应

我在这里做错了什么?

更新:

onBindViewHolder:

override fun onBindViewHolder(holder: ItemBaseViewHolder, position: Int) {
    holder.bind(plannersList?.get(position)!!)

}

您可以在viewHolder class 的bind方法中为recyclerView的每个项目设置clickListeners

class PlannerListhHolder(private val plannerListBinding: PlannerItemBinding) :
            RecyclerView.ViewHolder(plannerListBinding.root) {
            fun bind(plannerItem: PlannerItem) {
                plannerListBinding.root.setOnClickListener {
                    //show your dialog
                }
            }
        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM