Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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_Android Listview_Android Animation - Fatal编程技术网

Android 有没有办法阻止Listview在数据更改时重新加载?

Android 有没有办法阻止Listview在数据更改时重新加载?,android,listview,android-listview,android-animation,Android,Listview,Android Listview,Android Animation,我正在尝试从listview中以动画方式删除项目。然后项目从左向右移动的动画(删除时离开屏幕)我在其下方的视图上运行动画,以向上移动并捕捉到位,但问题是当listview检测到删除时,列表会闪烁。 我运行动画的代码是: Animation an = AnimationUtils.loadAnimation(MainActivity.this, R.anim.offscreen); itemc.setHasTransientState(tr

我正在尝试从listview中以动画方式删除项目。然后项目从左向右移动的动画(删除时离开屏幕)我在其下方的视图上运行动画,以向上移动并捕捉到位,但问题是当listview检测到删除时,列表会闪烁。 我运行动画的代码是:

 Animation an = AnimationUtils.loadAnimation(MainActivity.this, R.anim.offscreen);
                            itemc.setHasTransientState(true);
                            itemc.startAnimation(an);
                            final Handler handler = new Handler();
                            handler.postDelayed(new Runnable() {
                                @Override
                                public void run() {
                                    l.remove(positionc);
                                    adapter.remove(positionc);

                                   // adapter.notifyDataSetChanged();



                                }
                            }, 1050);
                            //animate below views to position



                            ArrayList<View> vl=new ArrayList<View>();
                            //for loop runs and saves all the views below the deleted view 
                            for(int i=position+1;i<=listView.getLastVisiblePosition();i++)
                            {
                                vl.add(listView.getChildAt(i));
                            }
                            //one by one animation is performed on all the views 
                            ListIterator itr=vl.listIterator();
                            while(itr.hasNext())
                            {

                                View v =(View)itr.next();
                                v.setHasTransientState(true);
                                v.animate().setDuration(500).translationYBy(-      itemc.getHeight());//iteam is the view deleted 
                            }
Animation an=AnimationUtils.loadAnimation(MainActivity.this,R.anim.offscreen);
itemc.setHasTransientState(真);
项目c.启动(an);
最终处理程序=新处理程序();
handler.postDelayed(新的Runnable(){
@凌驾
公开募捐{
l、 移除(位置C);
适配器。拆除(位置C);
//adapter.notifyDataSetChanged();
}
}, 1050);
//为下面的视图设置动画以定位
ArrayList vl=新的ArrayList();
//for循环运行并保存删除视图下的所有视图

对于(int i=position+1;i我找到了一种方法来阻止android在datasetchange的listview上运行默认动画(想要实现我自己的动画) 只需添加:

listView.setLayoutTransition(null);
这将停止listview运行其默认动画