如何在Android RecyclerView中的onChildDraw中监听点击事件?

问题描述

private fun initSwipe() {
    val simpleItemTouchCallback: ItemTouchHelper.SimpleCallback = object :
        ItemTouchHelper.SimpleCallback(0,ItemTouchHelper.LEFT or ItemTouchHelper.RIGHT) {
        override fun onMove(
            recyclerView: RecyclerView,viewHolder: RecyclerView.ViewHolder,target: RecyclerView.ViewHolder
        ): Boolean {
            return false
        }

        override fun onSwiped(viewHolder: RecyclerView.ViewHolder,direction: Int) {

            val position = viewHolder.adapterPosition

            if (direction == ItemTouchHelper.RIGHT) {
                //sell
//                    onClickSell(iPresenter?.data?.get(position))
            }

            if (direction == ItemTouchHelper.LEFT) {
                //buy
//                    onClickBuy(iPresenter?.data?.get(position))
            }

        }


        override fun onChildDraw(
            c: Canvas,recyclerView: RecyclerView,dX: Float,dY: Float,actionState: Int,isCurrentlyActive: Boolean
        ) {

            val paint = Paint()
            val textPaint = Paint()
            textPaint.color = Color.WHITE
            textPaint.textSize = 40f

            if (actionState == ItemTouchHelper.ACTION_STATE_SWIPE) {
                val itemView = viewHolder.itemView
                val height =
                    itemView.bottom.toFloat() - itemView.top.toFloat()
                val width = height / 3
                if (dX > 0) {
                    recyclerView.setOnClickListener(sellListener)
                    paint.color = Color.parseColor("#288fc9")
                    val background = RectF(
                        itemView.left.toFloat(),itemView.top.toFloat(),dX,itemView.bottom.toFloat()
                    )
                    c.drawRect(background,paint)

                    val leftButton = RectF(
                        itemView.left.toFloat() + width,itemView.top.toFloat() + width,itemView.left.toFloat() + 2 * width,itemView.bottom.toFloat() - width
                    )

                    c.drawText(
                        getString(R.string.sell),leftButton.centerX() - (20),leftButton.centerY() + (30 / 2),textPaint
                    )

                } else {
                    recyclerView.setOnClickListener(buyListener)
                    paint.color = Color.parseColor("#5ADD69")
                    val background = RectF(
                        itemView.right.toFloat() + dX,itemView.right.toFloat(),paint)

                    val rightButton = RectF(
                        itemView.right.toFloat(),itemView.bottom.toFloat()
                    )

                    c.drawText(
                        getString(R.string.buy),rightButton.centerX() - (170),rightButton.centerY() + (30 / 2),textPaint
                    )

                }
            }


            super.onChildDraw(
                c,recyclerView,viewHolder,dX / 4,dY,actionState,isCurrentlyActive
            )
        }

    }

    val itemTouchHelper = ItemTouchHelper(simpleItemTouchCallback)
    itemTouchHelper.attachToRecyclerView(viewDataBinding?.recyclerViewHolding)
}

这是我在向左滑动购买选项上看到的代码,与向右滑动购买选项上看到的代码相同。现在,我想对“买卖”点击进行一些操作。如何获得点击事件?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...