5

我想要一个 ListView,当我单击该项目时,视图会滑到左侧。

所以我有:

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

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

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

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

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

4

1 回答 1

1

我建议你也检查这个线程。

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

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

于 2012-05-31T05:06:01.510 回答