gpt4 book ai didi

Android - 滑动删除 - 添加撤消选项

转载 作者:太空狗 更新时间:2023-10-29 13:15:59 25 4
gpt4 key购买 nike

我正在使用 RecyclerView,并且我已经成功地使用以下代码实现了滑动删除:

  @Override
public void onChildDraw(Canvas c, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) {
if (actionState == ItemTouchHelper.ACTION_STATE_SWIPE) {
// Get RecyclerView item from the ViewHolder
View itemView = viewHolder.itemView;
canvas = c;
Paint p = new Paint();
Bitmap icon;

if (dX > 0) {
icon = BitmapFactory.decodeResource(
activity.getResources(), R.drawable.ic_delete_white_36dp);
/* Set your color for positive displacement */
p.setARGB(255, 255, 0, 0);
// Draw Rect with varying right side, equal to displacement dX
c.drawRect((float) itemView.getLeft(), (float) itemView.getTop(), dX,
(float) itemView.getBottom(), p);
// Set the image icon for Right swipe
c.drawBitmap(icon,
(float) itemView.getLeft() + HelperMethods.dpToPixel(16),
(float) itemView.getTop() + ((float) itemView.getBottom() - (float) itemView.getTop() - icon.getHeight()) / 2,
p);
} else {
icon = BitmapFactory.decodeResource(
activity.getResources(), R.drawable.ic_delete_white_36dp);

/* Set your color for negative displacement */
p.setARGB(255, 255, 0, 0);

// Draw Rect with varying left side, equal to the item's right side
// plus negative displacement dX
c.drawRect((float) itemView.getRight() + dX, (float) itemView.getTop(),
(float) itemView.getRight(), (float) itemView.getBottom(), p);

//Set the image icon for Left swipe
c.drawBitmap(icon,
(float) itemView.getRight() - HelperMethods.dpToPixel(16) - icon.getWidth(),
(float) itemView.getTop() + ((float) itemView.getBottom() - (float) itemView.getTop() - icon.getHeight()) / 2,
p);
}
Integer ALPHA_FULL = 255;
// Fade out the view as it is swiped out of the parent's bounds
final float alpha = ALPHA_FULL - Math.abs(dX) / (float) viewHolder.itemView.getWidth();
viewHolder.itemView.setAlpha(alpha);
viewHolder.itemView.setTranslationX(dX);
}
}

在用户滑动项目后的几秒钟内,我无法实现撤消选项。

gmail undo option

我希望它看起来类似于 gmail 应用程序的撤消选项,并且我不希望使用任何外部库。

最佳答案

我猜您有一个 onSwiped 方法可以从适配器中删除项目?我的建议是不要真正将其删除,只需将其标记为已刷掉即可。您的适配器和 View 持有者应该呈现与您在 onChildDraw 后面的绘图相同的 View 。那里有一个撤消按钮,所以如果用户点击它,只需将刷掉标志设置为 false 并重新绘制该行(我的意思是通知适配器执行此操作)。在 onSwiped 中启动一个计时器,如果在 x 毫秒内没有任何反应,则实际从适配器中删除该项目。

编辑:这只是一个想法,实际上从未这样做过......

编辑:我试了一下,看这个blog post还有这个github repo .

关于Android - 滑动删除 - 添加撤消选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34667171/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com