当前位置: 代码迷 >> Android >> android listview 数据反复
  详细解决方案

android listview 数据反复

热度:87   发布时间:2016-05-01 20:05:39.0
android listview 数据重复
楼主所描述的是LogCat里显示的信息,对应的实际使用感受是,列表上下拖动的延迟很严重。
       楼主所转的帖我看了,但经过我的实践操作的结果来看,采用固定View的layout_heigth属性的方法不能解决这个问题。
      

       也许和版本有关,我使用的HTC G3 2.1版本作为修改平台,解决的策略是,减少getView() 方法的操作量,实际上是减少 inflate 的操作次数。



       我采用的是对象池,先建立一个类变量 View[] views 用来保存列表中所有item的View.


       假设变量objects 为ArrayAdapter中的 ArrayList 参数, 则在ArrayAdapter的构造方法中实例化views :


       views = new View[objects.size()] ;


       那么在getView() 方法中这样设置:    


       public View getView(int position, View convertView, ViewGroup parent)  {


                 if ( view [ position ] != null ) {
                           return view[ position ] ;
                 }


                 // 其它初始化操作


                 return view[ position ] ;


       }


       这样当第1次阅读列表的时候可能会有点延迟,之后列表的滑动就很流畅了。原因就是像4楼说的那样,每次getView 都要做很多操作,对象的建立和销毁很占用资源。


       希望大家以后多多采用对象池的方法。
  相关解决方案