ListView的优化-创新互联

1、 复用行布局(用已经完全消失的布局对象去替代即将出现的那个布局对象)

成都创新互联公司是一家专业提供抚远企业网站建设,专注与成都网站设计、成都网站制作、H5页面制作、小程序制作等业务。10年已为抚远众多企业、政府机构等服务。创新互联专业的建站公司优惠进行中。

在自定义MyAdapter(继承BaseAdapter)适配器时,需重写getVIew(int position, View convertView, ViewGroup parent)方法,其中的converView方法会保存那个已经完全消失的布局对象,因此我们用convertView来替代即将要创建的inflate

        (判断convertView为空时创建布局文件,不为空时直接用convertView来替代)

实现代码:

    View inflate = null;

    if(convertView==null){

                     //得到布局转换器

                     LayoutInflater layoutInflater= getLayoutInflater();

                     //把布局xml文件转换成布局对象

                     inflate = layoutInflater.inflate(R.layout.item,null);

   }else{

                     //用已经完全消失的布局对象去替代即将出现的布局对象

                     inflate = convertView;

  }

2、去减少控件的查找次数

2.1 单控件——将TextView位置上调

实现代码:

        Viewinflate = null;

        TextViewtextView = null;

        if(convertView==null){

                  LayoutInflaterlayoutInflater = getLayoutInflater();

                  //把布局xml文件转换成布局对象

                  inflate= layoutInflater.inflate(R.layout.item, null);

                  textView= (TextView) inflate.findViewById(R.id.textView1);

                  //把ViewHolder对象放到inflate包里面

                  inflate.setTag(textView);

        }else{

                  //用已经完全消失的布局对象去替代即将出现的布局对象

                  inflate= convertView;

                  //把对象从inflate的口袋中

                  textView= inflate.getTag();

        }

   2.2 多控件——使用ViewHolder:创建对象ViewHolder,将TextView封装到新ViewHolder中(放入的是多控件)

实现代码:

   ================================================

        classViewHolder{

                  TextViewtextView;

                  TextViewtextView2;

        }

        ================================================

   Viewinflate = null;

        ViewHolderholder = null;

        //convertView用来保存那个已经完全消失的布局对象

        if(convertView==null){

                  holder= new ViewHolder();

                  //得到布局转换器

                  LayoutInflaterlayoutInflater = getLayoutInflater();

                  //把布局xml文件转换成布局对象

                  inflate= layoutInflater.inflate(R.layout.item, null);

                  holder.textView= (TextView) inflate.findViewById(R.id.textView1);

                  holder.textView2= (TextView) inflate.findViewById(R.id.textView2);

                  //把ViewHolder对象放到inflate包里面

                  inflate.setTag(holder);

        }else{

                  //用已经完全消失的布局对象去替代即将出现的布局对象

                  inflate= convertView;

                  //把对象从inflate的口袋中

                  holder= (ViewHolder) inflate.getTag();

        }

3、代码优化

       1、创建一个类,类的属性就是我们所需的数据类型

       2、创建一个容器

       3、把所需的数据都放到容器中

       4、根据position从容器中取出该行所对应的那个对象

       5、设置控件内容

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享名称:ListView的优化-创新互联
分享网址:http://azwzsj.com/article/dogsop.html