解决这个问题的方法是在删除动画完成后手动删除第二个项目。可以通过给ListView设置一个动画监听器,在动画结束时触发删除操作。以下是一个示例代码:
ListView listView = findViewById(R.id.list_view);
final ArrayAdapter adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, yourDataList);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView> parent, View view, final int position, long id) {
Animation anim = AnimationUtils.loadAnimation(MainActivity.this, android.R.anim.slide_out_right);
anim.setDuration(500);
anim.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
adapter.remove(adapter.getItem(position + 1));
adapter.notifyDataSetChanged();
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
view.startAnimation(anim);
}
});
上述代码中,我们给ListView的每个item设置了点击事件监听器。当点击一个item时,会触发一个向右滑出的删除动画,并在动画结束时删除第二个项目。注意要在动画结束时调用adapter.remove()方法删除对应的数据项,并调用adapter.notifyDataSetChanged()刷新ListView。