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

Rob*_*hai 5 animation android listview swipe-gesture

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

所以我有:

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

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

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

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

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

Zso*_*agy 1

我建议您也检查线程。

我认为,如果不需要修改适配器来适应这种类型的行为,这是不可能的。据我了解,实现识别不同 ListView 行上的滑动手势的代码没有任何问题,只有动画应该在相应的行上遵循此手势。

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