单击时如何在ListView中为项目设置动画?

时间:2012-04-04 17:41:17

标签: android listview animation swipe-gesture

我希望有一个ListView,当我点击该项时,视图向左滑动。

所以我有:

listView.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1,
                int arg2, long arg3) {
            arg1.startAnimation(openAnimation);
        }
    });

但是,动画应用于列表中的不同项而不是单击的项。这种行为似乎是随机的,因为它有时同时发生在多个项目上。

我怀疑这是因为Adapter重用它的方式来创建项目。我去修改我的适配器中的getView方法,以便在每次调用时对新视图进行充气。然后动画不再发生了。

有没有办法解决这个问题?我试图将动画移动到我的适配器内,但后来我无法将它与Listview上的其他操作相关联。

最终,我希望该项目可以点击,但是当向左/向右滑动显示删除按钮(iOS删除行为)时。我在这里走错了路吗?这应该是可行的,因为Android可以在通知栏中实现滑动删除。

1 个答案:

答案 0 :(得分:1)

我建议你也检查this帖子。

我不认为,这是可能的,无需修改适配器以适应此类行为。根据我的理解,实现识别不同ListView行上的滑动手势的代码没有任何问题,只有动画应该在相应的行上跟随此手势。

我会重写适配器以适应至少2种行类型:普通行和要删除的行。在适配器的“getView()”方法中,您应该只重用普通视图的convertView。要删除的行不应该重用它们,因此动画一行不会修改其他行。 单击正常行后,应首先告诉适配器单击位置上的行现在是要删除的类型,调用.notifyDatasetChanged(),然后在该行上启动动画。