平滑删除自定义列表视图中的项目

Posted

技术标签:

【中文标题】平滑删除自定义列表视图中的项目【英文标题】:Smooth removal of items within a custom listview 【发布时间】:2012-12-10 07:36:36 【问题描述】:

我希望能够以动画方式从列表视图中删除项目,同时为已删除的项目及其下方的项目设置动画,类似于 API 演示中的 layoutAnimations 演示。

例如:

在这里,我希望删除第 1 项。第一个动画会将第 1 项平滑地向右移动,完成后会将该项下面的所有项(包括更多项,如果存在)平滑地动画到该项的空白空间1 个已使用。

第一个动画很简单:

final TranslateAnimation animation = new TranslateAnimation(TranslateAnimation.RELATIVE_TO_SELF, 0.0f,
        TranslateAnimation.RELATIVE_TO_SELF, 1.0f, TranslateAnimation.RELATIVE_TO_SELF, 0.0f,
        TranslateAnimation.RELATIVE_TO_SELF, 0.0f);
animation.setDuration(500);
view.startAnimation(animation);

但是在我实际使用回收其项目的 listView 的情况下,如何实现其他项目的良好效果?

在我提到的演示中,他们甚至没有使用 listView。就我而言,这很成问题,因为我有很多物品。

我也注意到similar post about this 的问题,但我发现的只是你需要修改listView 代码,但没有真正的解决方案。

顺便说一句,最小的 sdk 是 9。

【问题讨论】:

你读过这个吗? ***.com/questions/3928193/… 是的,我也在帖子末尾写过。 :( 抱歉没看到。我仍然相信您需要深入研究 ListView 的源代码并寻找调整它的方法。 我不知道该怎么做,但也许看看通知来源的任何东西> = 4.0。当您的手指直接弹出项目时,我看不到它与 SDK 9 一起使用。您可能能够激活手势以在项目上注册滑动,但我认为它不会像您想要的那样顺利进行。那只是我的 2 美分.. 如果我有能力使用更新的 API 怎么办?对于较低的 API,我不会显示此动画 ... 【参考方案1】:

我找到了一个很好的示例,它几乎完全符合我的要求,但遗憾的是它需要 API 12 才能运行,而且我已经成功地让它以某种方式崩溃。

样本可以在here找到。

the website 也有其他不错的示例和很酷的安卓 UI 视图。

希望有人能够找到一种方法使其可用于较低的 API 级别,因为统计数据仍然表明许多人使用 API 10。


编辑:链接已失效。但是,使用 RecyclerView 可以做到这一点。 您甚至可以使用滑动删除功能,如here 所示。

【讨论】:

你在开玩笑吗?日语网站 @AllanRamírez 遗憾的是,链接已失效。那里有一个很好的样品。但是,这里有一个替代方案:github.com/romannurik/android-SwipeToDismiss @AllanRamírez 抱歉。这些示例的代码量很大,所以在这里写它们有点困难,我放了链接。 Github repos 很少被删除,所以我认为现在是安全的。

以上是关于平滑删除自定义列表视图中的项目的主要内容,如果未能解决你的问题,请参考以下文章

使用带有自定义 baseadapter 的 arraylist 错误地删除列表视图项位置

带有自定义对象的可编辑列表视图

Android - 从自定义列表视图中删除一个项目并在长按时更新它

使用 sqliteDatabase 从自定义列表视图中删除项目

使用sqliteDatabase从自定义列表视图中删除项目

使用微调器从自定义列表视图中删除了错误的行