当前位置: 首页 > 知识库问答 >
问题:

阻止滑动以删除recyclerview项

萧玮
2023-03-14

共有1个答案

裴劲
2023-03-14

您的recyclerView附加了recyclerView.adapter。适配器确定recyclerView可以看到和显示哪些信息。因此,如果在包含100个项目的备份数组(由您管理)中的项目10被刷屏,适配器可以报告数组现在包含99个项目,并且不会将刷屏的项目显示给recyclerview。这样,项目似乎被删除了,但在内部进行维护,并且仍然可以通过编程访问。如何管理内部状态取决于您的实现。

但是,如果您不想从屏幕上删除项,而只是更改其外观,我认为您需要查看OnItemDismiss方法,该方法实际删除项并将数据更改通知适配器。

public void onItemDismiss(int position) {
    mItems.remove(position);
    notifyItemRemoved(position);
}

在这里你可以做出改变。该项目将保留在适配器中。如果视图持有者被回收,您还需要将该位置标记为"Swiped",这样您就可以保持可视"Swiped"状态。

public void onItemDismiss(int position) {
    // Change background color, etc.
}

看一看带有“滑动删除”和“撤消”功能的代码,了解一些想法。下面是一个对话框的示例,如果单击“取消”,则在实际发生删除之前调用该对话框。还有许多其他“撤消”的例子可用。你正在尝试做的事情可以被认为是一个直接的、隐含的“撤销”,带有对背景的视觉改变。

如果您希望在滑动后将项目移回原位,则应执行以下操作:

public void onItemDismiss(int position) {
    notifyItemChanged(position);
}
 类似资料:
  • 我曾经使用SwipeToDismiss库,但现在我正在尝试迁移到RecyclerView,但事情并不是那么明显,您知道这个库的任何替换吗?有什么想法如何从零开始实施它吗?

  • 问题内容: 我正在使用创建一个CheckList应用程序。我想知道如何添加滑动以删除。 这是我的ViewController.swift: 这是MyTableViewCell.swift: 我将iOS8用作部署目标(不确定会造成什么变化)。 问题答案: 添加以下两个功能: Swift 3.0: 斯威夫特4.2

  • 定义 模拟短信、微信聊天列表滑动删除的组件。 图片展示 代码演示 import SwipeAction from 'pile/dist/components/swipeaction' const {SwipeAction, Layouts} = pile, { Layout, LayoutHd, LayoutHdTitle, LayoutHdAside, LayoutBd, LayoutFt

  • 我的回收器视图使用ItemTouchHelper启用向右滑动功能,如下所示 自定义ItemTouchHelper.SimpleCallback 布局 我的问题是,当我假装滑动删除项目并改变主意时,可绘制的删除图标不会隐藏,直到我触摸屏幕进行任何其他操作。 更新:我找到了一个解决方法,将list_item的背景颜色更改为某种颜色。但是如果我需要透明背景,这不是正确的解决方案。

  • 每当我尝试使用axios发送删除endpoint的请求时,都会出现以下错误: 通过CORS策略阻止从源http://localhost:3000在http://localhost:8080/api/payment_card/delete/1234123412343433处访问XMLHttpRequest:对预检请求的响应未通过权限改造检查:请求的资源上不存在“Access-Control-Allo

  • 我已经实现了一个,可以在其中添加和删除项目。我希望添加的项目添加到第二个位置,并且每当我添加新项目时,动画运行良好。也就是说,最后一个项目向下移动,让新项目的空间淡入。 当我删除一个项目时,有一个问题我不知道如何解决。我希望它的行为是: < li >淡出删除的元素, < li >向上移动它下面的所有项目。 实际发生的事情是,首先,最后一项消失,然后动画的其余部分发生。当已删除元素下方的项目向上移动