Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android listview动画淡出,然后添加新行_Android_Listview_Animation - Fatal编程技术网

Android listview动画淡出,然后添加新行

Android listview动画淡出,然后添加新行,android,listview,animation,Android,Listview,Animation,嘿,伙计们,我正试图在android的待办事项列表应用程序中制作一个淡出动画。我有这个密码 public void removeToDo(){ myItems.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { @Override public boolean onItemLongClick(AdapterView<?> parent, View view, final int

嘿,伙计们,我正试图在android的待办事项列表应用程序中制作一个淡出动画。我有这个密码

public void removeToDo(){
myItems.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
    @Override
    public boolean onItemLongClick(AdapterView<?> parent,  View view, final int position, long id) {



        ObjectAnimator anim = ObjectAnimator.ofFloat(view, View.ALPHA, 0);

        anim.addListener(new AnimatorListenerAdapter() {
            @Override
            public void onAnimationEnd(Animator animation) {
                items.remove(position);
                itemsAdapter.notifyDataSetChanged();
            }
        });

        anim.start();

        return true;
    }
});

}
public void removeToDo(){
myItems.setOnItemLongClickListener(新的AdapterView.OnItemLongClickListener(){
@凌驾
公共布尔值长单击(AdapterView父对象、视图、最终整型位置、长id){
ObjectAnimator anim=ObjectAnimator.offload(view,view.ALPHA,0);
anim.addListener(新的AnimatorListenerAdapter(){
@凌驾
AnimationEnd上的公共无效(Animator动画){
项目。移除(位置);
itemsAdapter.notifyDataSetChanged();
}
});
anim.start();
返回true;
}
});
}
是的,它的淡出效果很好,但问题是,当我添加一个新项目时,它重用了已经淡出该项目的行,因此结果是,在添加一个新项目时,我将有一个新行,但上面没有文本


请帮助我,我只是个新手:)

试试这个解决方案
ObjectAnimator
不可靠,请使用
Animation
代替此选项

listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
            @Override
            public boolean onItemLongClick(AdapterView<?> parent, final View view, final int position, long id) {
                final Adapter adapter = (Adapter) parent.getAdapter();

                Animation fadeOut = new AlphaAnimation(1, 0);
                fadeOut.setInterpolator(new AccelerateInterpolator());
                fadeOut.setDuration(500);
                fadeOut.setAnimationListener(new Animation.AnimationListener() {
                    @Override
                    public void onAnimationStart(Animation animation) {

                    }

                    @Override
                    public void onAnimationEnd(Animation animation) {
                        adapter.pointItems.remove(position);
                        adapter.notifyDataSetChanged();
                    }

                    @Override
                    public void onAnimationRepeat(Animation animation) {

                    }
                });

                view.startAnimation(fadeOut);

                return true;
            }
        });
listView.setOnItemLongClickListener(新的AdapterView.OnItemLongClickListener(){
@凌驾
公共布尔长单击(AdapterView父视图、最终视图、最终整型位置、长id){
最终适配器=(适配器)parent.getAdapter();
动画淡出=新的AlphaAnimation(1,0);
设置内插器(新的加速器内插器());
衰减设置持续时间(500);
fadeOut.setAnimationListener(新的Animation.AnimationListener(){
@凌驾
onAnimationStart上的公共无效(动画){
}
@凌驾
onAnimationEnd上的公共无效(动画){
适配器。点项目。移除(位置);
adapter.notifyDataSetChanged();
}
@凌驾
onAnimationRepeat上的公共无效(动画){
}
});
视图。开始激活(淡出);
返回true;
}
});

谢谢,伙计,这很有效。我还提出了一些意见,我可以在RecyclerView中使用ObjectAnimator?我只使用动画,并向您推荐。