Android--ListView 更高效的使用 Adapter

举报
ShaderJoy 发表于 2021/12/30 00:02:36 2021/12/30
4k+ 0 0
【摘要】 一、Adapter Adapter是ListView和数据源之间的中间人。 当每条数据进入可见区时,adapter会调用他的getView()方法,并返回代表具体数据的视图。滚动的时候频繁调用,支持成千上万的数据。 ①、最简单的方法,最慢最不实用 public void getView(int position , Vie...

一、Adapter

Adapter是ListView和数据源之间的中间人。

当每条数据进入可见区时,adapter会调用他的getView()方法,并返回代表具体数据的视图。滚动的时候频繁调用,支持成千上万的数据。

①、最简单的方法,最慢最不实用


       public void getView(int position , View convertView , ViewGroup parent){
              View item = mInflater.inflate(R.layout.list_view, null);
               (TextView)item.findViewById(R.id.text).setText(DATA[position]);
               (ImageView)item.findViewById(R.id.img).setImageBitmap(icon);
              return item;
           }
   
  
②、利用convertView回收视图,效率提高200%


       public void getView(int position , View convertView , ViewGroup parent){
              if(convertView == null){
                   convertView = mInflater.inflate(R.layout.list_view, null);
               }
             (TextView)convertView.findViewById(R.id.text).setText(DATA[position]);
             (ImageView)convertView.findViewById(R.id.img).setImageBitmap(icon);
                return convertView;
           }
   
  

③、使用ViewHolder模式,效率再提高50%


       static class ViewHolder{
              private TextView tv;
              private ImageView iv;
           }
          public void getView(int position , View convertView , ViewGroup parent){
               ViewHolder holder;
              if(convertView == null){
                   convertView = mInflater.inflate(R.layout.list_view, null);
                   holder = new ViewHolder();
                   holder.tv = (TextView)convertView.findViewById(R.id.text);
                   holder.iv = (ImageView)convertView.findViewById(R.id.img);
                   convertView.setTag(holder);
               }else{
                   holder = (ViewHolder) convertView.getTag();
               }
               holder.tv.setText(DATA[position]);
               holder.iv.setImageBitmap(icon);
              return convertView;
           }
   
  

更新的效率比较:



文章来源: panda1234lee.blog.csdn.net,作者:panda1234lee,版权归原作者所有,如需转载,请联系作者。

原文链接:panda1234lee.blog.csdn.net/article/details/8831248

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。