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

时间:2020-08-11 07:25:51

标签: android android-recyclerview onitemclicklistener

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,
            viewHolder: RecyclerView.ViewHolder,
            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.top.toFloat(),
                        itemView.right.toFloat(),
                        itemView.bottom.toFloat()
                    )
                    c.drawRect(background, paint)

                    val rightButton = RectF(
                        itemView.right.toFloat(),
                        itemView.top.toFloat(),
                        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)
}

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

0 个答案:

没有答案
相关问题