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

Android静态编程语言:我如何成功地删除项目从回收视图,调用通知FyItemRangeChanged(),和动画

陈朗
2023-03-14

我有一个RecyclerView,我正在尝试实现删除功能。为了获得ItemView的正确位置,我在删除后调用notifyItemRangeChanged()。但是,当我这样做时,itemView向右滑动并被删除的酷动画现在消失了。看起来notifyItemRangeChanged()会切断notifyItemRemoved()创建的动画。有什么方法可以让动画和项目正确删除吗?

活动代码:

        circuitsObject?.circuits?.remove(circuitsObject?.circuits?.get(position))
        recyclerView.adapter?.notifyItemRemoved(position)
        recyclerView.adapter?.notifyItemRangeChanged(position, circuitsObject?.circuits!!.size)

        if (recyclerView.adapter?.itemCount!! == 0) {
            loadEmptyUI()
        }

适配器代码

class CircuitViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
...
itemView.setOnClickListener { clickListener(circuit) }
itemView.setOnLongClickListener {
    onLongClickListener(position)
    true
}

参数“position”直接来自ViewHolder。为了补偿位置与我的数据索引不匹配的事实,我使用了“notifyItemRangeChanged”。但是,这样做会消除动画。所以我想知道是否有任何方法可以绕过这个,这样我仍然可以有适当的位置逻辑以及删除动画。

共有1个答案

马淇
2023-03-14

您不需要调用notifyItemRangeChanged(…) notifyItemRemoved(…)后的code>

 类似资料:
  • 在从recycler视图中移除项目后,我必须获取recyclerview的数据集大小 我正在从适配器中删除项目 代码片段

  • 我试图发送一个用户到一个活动的基础上,如果他们的电子邮件被验证,然后如果他们有一个用户名。到目前为止,我的代码如下所示: 和 我如何通过活动?我试着将它作为字符串传递,但没有成功。我做错了什么?

  • 我正在尝试删除一行recyclerview using room。我正在滑动以删除特定的行。。。。 这是我的地址表-- 地址: 数据库: 地址活动: 适配器: 从上面的代码中,我可以一次删除一行,但当我重新访问该活动时,它会再次显示已删除的行 我想知道如何使用in 根据@quealegriamasalegre建议的最新答案 这是我的申请表:-- 适配器现在: 现在和科特林分手了。Uninitial

  • 正如标题所说,我正在尝试将Java和Kotlin混合在一个项目中。这里有一个很好的例子。混合java kotlin hello world。除了kotlin在src/main/Java/somepackage/SomeClass中找不到我的任何Java类之外,所有的东西都正常工作。Java语言 这是什么原因? 我的身材。gradle看起来像这样 而不是开始尝试在更大的项目上实现这一点。我试图通过创

  • 这是不是意味着我没有刷新我的适配器还是什么? @重写公共void onDeleteClick(int position){FoodInfo selectedItem; 食物适配器 } 这是我删除项目后的删除方法,它仍然存在于我的回收视图中,并在firebase中消失 我必须离开这个页面并再次访问,然后它只显示与firebase完全相同的项目 有人帮忙吗?

  • 我的项目中有这个错误。但是,找不到任何地方如何解决它。有人有这个问题吗? 它会导致每次都重新运行构建。 使用静态编程语言编译守护程序不成功 无法连接到kotlin守护程序。使用回退策略。