ListView优化方案

ListView的一些优化

一、Adapter中的优化

运用了convertView的回收视图,当convertView不为NULL时,就不需要再去解析视图。
还利用了viewholder模式,不用每次都去通过id查找控件findViewByID,而是将View保存在viewholder中,再通过convertView将viewholder标记下来。

实例代码

public class BookAdapter extends BaseAdapter {private  Context mContext;private  List<Book> mdata;public BookAdapter(Context mContext, List<Book> mdata) {this.mContext = mContext;this.mdata = mdata;}public void refresh(List<Book> list) {mdata = list;notifyDataSetChanged();}public List<Book> getDataList() {return mdata;}@Overridepublic int getCount() {return mdata.size();}@Overridepublic Book getItem(int position) {return mdata.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {Holder holder = null;if (convertView == null) {LayoutInflater inflater = LayoutInflater.from(mContext);convertView = inflater.inflate(R.layout.item_book, null);holder = new Holder();holder.tv_book = (TextView)convertView.findViewById(R.id.book_text);holder.tv_uri = (TextView) convertView.findViewById(R.id.book_uri);convertView.setTag(holder);} else {holder = (Holder) convertView.getTag();}holder.tv_book.setText(mdata.get(position).getName());holder.tv_uri.setText(mdata.get(position).getLink());return convertView;}class Holder {private TextView tv_book ,tv_uri;}}

二、图片的异步加载

监听ListView滚动状态,只有当其静止的时候才异步加载网络图片数据。
(给ImageView设置tag)

三、图片的缓存加载

安卓开发之ListView优化方案相关推荐

  1. 安卓开发之用RecyclerView做陈列式布局(仿小红书首页/淘宝商品浏览)

    安卓开发之用RecyclerView做陈列式布局 一.使用RecyclerView要先导入recyclerview-v7库 二.在layout文件夹内,新建一个xml文件,编写你要展示的item的样式 ...

  2. Flutter开发之ListView添加HeaderView和FooterView-2(39)

    参考文章:RecyclerView添加HeaderView和FooterView 接着Flutter开发之ListView添加HeaderView和FooterView-1 继续研究. 通过Recyc ...

  3. Flutter开发之ListView使用第三方flutter_refresh加载更多(37)

    在Flutter开发之ListView使用第三方pull_to_refresh加载更多(36) 中我们实现了下拉刷新.上拉分页加载的功能.今天介绍另一个ListView使用第三方flutter_ref ...

  4. Flutter开发之ListView使用第三方pull_to_refresh加载更多(36)

    在Flutter开发之ListView下拉刷新&上拉加载更多(35) 中我们实现了下拉刷新.上拉分页加载的功能.但是使用起来非常不方便,且不满一屏时难以处理. 今天介绍ListView使用第三 ...

  5. Flutter开发之ListView下拉刷新上拉加载更多(35)

    在Flutter开发之ListView组件(21) 文章中,我们了解了ListView组件的基本使用.但是数据比较少,没有涉及分页加载.而实际开发中,下拉刷新和分页加载几乎是所有APP的标配.在iOS ...

  6. 安卓开发之Handler、HandlerThread学习篇

    安卓开发之Handler.HandlerThread学习心得篇           开篇说明:本文采用的都是最基础最简单的例子,目的只有一个:希望大家将学习的焦点放在Handler的理解和使用上,我不 ...

  7. 163.Oracle数据库SQL开发之 SQL优化——优化工具

    163.Oracle数据库SQL开发之 SQL优化--优化工具 欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/50186075 ...

  8. 安卓开发之WebView,进度条ProgressBar以及MediaPlayer和SonundPool的使用

    原 安卓开发之WebView,进度条ProgressBar以及MediaPlayer和SonundPool的使用 2018年06月06日 15:04:21 阅读数:106 内容比较简单,仅用作笔记,所 ...

  9. Android/安卓开发之WIFI的基本应用

    本文没有涉及到连接WIFI之后进行通讯,若有这方面的想法(例如两个客户端连接至同一WIFI后进行通讯),请关注后续文章一起讨论. 其实关于WIFI的开发的文章也非常的多,但是大部分只是简单的例子,不够 ...

  10. 安卓开发之IPC机制详解

    IPC(Inter-Process Communication),意为进程间通信或者跨进程通信,是指两个进程之间进行数据交换的过程.前面在学习Handler机制时提到过线程与进程的概念,在安卓中一个进 ...

最新文章

  1. RedHat/CentOS 7通过nmcli命令管理网络教程
  2. spring boot 整合mybatis 无法输出sql的问题
  3. MySQL数据库(十) 一一 数据库的导出和导入
  4. 《HTTP权威指南》– 8.网关、机器人
  5. w7怎么查看电脑配置_学室内设计,对电脑配置有何要求?不懂戳这!
  6. 国内程序员最容易发音错误的单词集合
  7. shell脚本中的条件测试
  8. 揭秘:高盛交易员赚取10亿美元利润的神秘“利器”终于公开了
  9. 翻车实录之Nature Medicine新冠单细胞文献|附全代码
  10. python打印字符串全排列_Python实现全排列的打印
  11. spring boot 整合 mybatis
  12. smokeping安装方法及不出图解决办法
  13. 如何避免在Block里用self造成循环引用
  14. ubuntu安装dockers和images:dvwa
  15. MyBatis 安装下载 及入门案例
  16. cad导出pdf_CAD批量打印插件神器CAD导出PDF插件
  17. 密码学术语中英文对照(持续更新中)
  18. DPI与DFI技术分析
  19. 如何免ROOT,实现安卓设备远程控制?
  20. 麦克风有电流声怎么办?

热门文章

  1. 用阿里云盘,找不到资源怎么办???
  2. 小米刷原生android系统下载地址,小米6刷原生安卓8.0下载|小米6刷原生安卓p 免费版_附教程_最火软件站...
  3. 时钟天气小插件显示没服务器,天气时钟小插件大全
  4. Adobe Flash CS6 下载与安装教程
  5. fh 幅频特性曲线怎么画fl_只要有上、下限截止频率fH、fL、中频电压增益和(),就可绘出基本共射放大电路的幅频特性曲线...
  6. Java输入输出流体系
  7. Python小练习——电影数据集TMDB预处理
  8. 《推荐系统实战(一)》基于统计的电影推荐系统(tmdb-5000数据集,数据清洗、特征提取、搭建模型等详细过程)
  9. 正在启动python的代码补全客户端_让 python 命令行也可以自动补全
  10. 软件开发的一些感想(五年工作总结版)