我有一个GridView,在其适配器中,我在getView方法中有以下代码:
if(deleteState){
Animation deleteAnimation = AnimationUtils.loadAnimation(ThisApplication.getContext(), R.anim.delete_animation);
holder.root.startAnimation(deleteAnimation);
}else{
holder.root.clearAnimation();
}
R.anim.delete_animation是一个类似iOS的动画,可以动摇项目:
<!-- Based on: http://stackoverflow.com/a/9449590/1369016 -->
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="200"
android:fromDegrees="-4"
android:pivotX="50%"
android:pivotY="50%"
android:repeatCount="infinite"
android:repeatMode="reverse"
android:toDegrees="4" />
到目前为止一切顺利。当我从列表中删除项目时出现问题。从我的适配器列表中删除项目后,我调用notifyDataSetChanged(),如下所示:
public void deletePhotoFromAdapter(final int position){
listOfPhotos.remove(position);
notifyDataSetChanged();
}
当我这样做时,该项目被删除但是,不知何故,我删除的项目的视图进入GridView的第一个项目视图本身!这就像动画使视图保持活着(但不知何故“传输”该视图低于GridView的第一项)。我附上三个截图,以便你可以看到我的意思:
我还试图在删除视图本身之前停止动画。然后,另一件有趣的事情发生了所有视图都停止了动画,但第一个项目下面的视图仍然出现(并且它仍然是动画的!)。
我不知道该视图的来源。任何人的想法?
答案 0 :(得分:1)
您是否尝试在没有动画的情况下删除它?我不认为动画是问题所在。删除对象后,尝试将适配器重新加载到View。只需致电
gridView.invalidateViews();
photosAdapter = new PhotosAdapter(this,
R.layout.grid_item, listOfPhotos);
gridView.setAdapter(photosAdapterAdapter);
试一试。 Greez