首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android Kotlin:如何成功地从回收器视图中移除物品、调用notifyItemRangeChanged()和动画

Android Kotlin:如何成功地从回收器视图中移除物品、调用notifyItemRangeChanged()和动画
EN

Stack Overflow用户
提问于 2021-01-03 13:30:00
回答 1查看 120关注 0票数 0

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

活动代码:

代码语言:javascript
复制
        circuitsObject?.circuits?.remove(circuitsObject?.circuits?.get(position))
        recyclerView.adapter?.notifyItemRemoved(position)
        recyclerView.adapter?.notifyItemRangeChanged(position, circuitsObject?.circuits!!.size)

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

适配器代码:

代码语言:javascript
复制
class CircuitViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
...
itemView.setOnClickListener { clickListener(circuit) }
itemView.setOnLongClickListener {
    onLongClickListener(position)
    true
}

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

EN

回答 1

Stack Overflow用户

发布于 2021-01-03 14:05:38

在调用notifyItemRemoved(...)之后,您不需要调用notifyItemRangeChanged(...)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65546927

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档