动画列表视图数据更改

roa*_*ter 17 animation android listview

我在Android上使用一组数据(ArrayList)来填充ListView.在我更改排序模式时,我重新排序链接到适配器的数据并调用notifyOnDataChanged()以更新列表.

这样做,但我希望能够将每个项目设置为新的位置(就像在iOS上一样),因为两个数据集都包含相同的项目 - 只是重新排序.

我花了一些时间思考如何设置动画,并决定将列表中较低的所有项目设置为零高度,然后在新位置动画回原来的大小.这样,当数据在其上方消失时,所有在数据中向上移动的项目实际上会在列表中向上移动.这就是想法,但我无法弄清楚如何实现它.

数据可以表示如下:

Set A | index | Set B
------+-------+------
A     | 0     | B
B     | 1     | A
C     | 2     | C
D     | 3     | F
E     | 4     | G
F     | 5     | E
G     | 6     | D
Run Code Online (Sandbox Code Playgroud)

我只是在寻找iOS默认处理Android的东西.不应该这么难.

fab*_*tes 11

做了一个小例子,动画重新排序这样一个列表.动画并不像你描述的那样,但希望它可以帮助你实现你想要的.

https://github.com/fabrantes/widgetexamples

流程是这样的:

  1. 在notifyDataSetChanged()之前保存当前状态.保存状态包括存储每个项目的getTop()坐标.
  2. 在notifyDataSetChange之后,遍历所有ListView视图并应用TranslateAnimation,其中新项目位置和旧位置之间的高度差异.