Android RecyclerView使用删除按钮进行部分滑动

问题描述 投票:0回答:1

我正在尝试在RecyclerView中实现部分滑动并添加删除按钮。我想在用户点击删除按钮后才删除刷过的行。我正在使用ItemTouchHelperSimpleCallback并且能够使用下面的代码实现部分滑动。我有两个待处理的任务:

  1. 我正在使用onChildDraw方法实现部分滑动。我正在部分滑动时绘制一个红色矩形。我想在其中添加“删除”文本。是否可以添加Button而不是绘制矩形?
  2. 如何在矩形/按钮上添加单击侦听器以执行删除操作。 qazxsw poi
android android-recyclerview onclicklistener swipe
1个回答
1
投票

回答你的问题:

  1. 是。这是可能的,但不是onChildDraw方法。有很多第三方库使用两层方法。第一层是您的项目视图,第二层是所有按钮。当您滑动时,它会显示按钮层,您可以通过设置按钮'OnClickListener来处理点击事件。
  2. 要将OnClickListener添加到onChildDraw方法中绘制的按钮,您必须将recylerView.setOnTouchListener设置为在屏幕上获取(x,y)。请查看AdamWei的帖子@Override public void onChildDraw(Canvas c, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) { try { Bitmap icon; if (actionState == ItemTouchHelper.ACTION_STATE_SWIPE) { View itemView = viewHolder.itemView; float height = (float) itemView.getBottom() - (float) itemView.getTop(); float width = height / 5; viewHolder.itemView.setTranslationX(dX / 5); Paint paint = new Paint(); paint.setColor(Color.parseColor("#D32F2F")); RectF background = new RectF((float) itemView.getRight() + dX / 5, (float) itemView.getTop(), (float) itemView.getRight(), (float) itemView.getBottom()); RectF icon_dest = new RectF((float) (itemView.getRight() + dX /7), (float) itemView.getTop()+width, (float) itemView.getRight()+dX/20, (float) itemView.getBottom()-width); c.drawBitmap(null, null, icon_dest, paint); } else { super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive); } } catch (Exception e) { e.printStackTrace(); } } 以获取指导。

你也可以查看我的帖子here。我已经使用ItemTouchHelper.SimpleCallback实现了所需的效果。它是一个简单的帮助类,易于使用。

© www.soinside.com 2019 - 2024. All rights reserved.