我希望有一个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可以在通知栏中实现滑动删除。
答案 0 :(得分:1)
我建议你也检查this帖子。
我不认为,这是可能的,无需修改适配器以适应此类行为。根据我的理解,实现识别不同ListView行上的滑动手势的代码没有任何问题,只有动画应该在相应的行上跟随此手势。
我会重写适配器以适应至少2种行类型:普通行和要删除的行。在适配器的“getView()”方法中,您应该只重用普通视图的convertView。要删除的行不应该重用它们,因此动画一行不会修改其他行。 单击正常行后,应首先告诉适配器单击位置上的行现在是要删除的类型,调用.notifyDatasetChanged(),然后在该行上启动动画。