Android--ListView 更高效的使用 Adapter

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

一、Adapter

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

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

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


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


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

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


   
  1. static class ViewHolder{
  2. private TextView tv;
  3. private ImageView iv;
  4. }
  5. public void getView(int position , View convertView , ViewGroup parent){
  6. ViewHolder holder;
  7. if(convertView == null){
  8. convertView = mInflater.inflate(R.layout.list_view, null);
  9. holder = new ViewHolder();
  10. holder.tv = (TextView)convertView.findViewById(R.id.text);
  11. holder.iv = (ImageView)convertView.findViewById(R.id.img);
  12. convertView.setTag(holder);
  13. }else{
  14. holder = (ViewHolder) convertView.getTag();
  15. }
  16. holder.tv.setText(DATA[position]);
  17. holder.iv.setImageBitmap(icon);
  18. return convertView;
  19. }

更新的效率比较:



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

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

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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