安卓开发之ListView优化方案
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优化方案相关推荐
- 安卓开发之用RecyclerView做陈列式布局(仿小红书首页/淘宝商品浏览)
安卓开发之用RecyclerView做陈列式布局 一.使用RecyclerView要先导入recyclerview-v7库 二.在layout文件夹内,新建一个xml文件,编写你要展示的item的样式 ...
- Flutter开发之ListView添加HeaderView和FooterView-2(39)
参考文章:RecyclerView添加HeaderView和FooterView 接着Flutter开发之ListView添加HeaderView和FooterView-1 继续研究. 通过Recyc ...
- Flutter开发之ListView使用第三方flutter_refresh加载更多(37)
在Flutter开发之ListView使用第三方pull_to_refresh加载更多(36) 中我们实现了下拉刷新.上拉分页加载的功能.今天介绍另一个ListView使用第三方flutter_ref ...
- Flutter开发之ListView使用第三方pull_to_refresh加载更多(36)
在Flutter开发之ListView下拉刷新&上拉加载更多(35) 中我们实现了下拉刷新.上拉分页加载的功能.但是使用起来非常不方便,且不满一屏时难以处理. 今天介绍ListView使用第三 ...
- Flutter开发之ListView下拉刷新上拉加载更多(35)
在Flutter开发之ListView组件(21) 文章中,我们了解了ListView组件的基本使用.但是数据比较少,没有涉及分页加载.而实际开发中,下拉刷新和分页加载几乎是所有APP的标配.在iOS ...
- 安卓开发之Handler、HandlerThread学习篇
安卓开发之Handler.HandlerThread学习心得篇 开篇说明:本文采用的都是最基础最简单的例子,目的只有一个:希望大家将学习的焦点放在Handler的理解和使用上,我不 ...
- 163.Oracle数据库SQL开发之 SQL优化——优化工具
163.Oracle数据库SQL开发之 SQL优化--优化工具 欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/50186075 ...
- 安卓开发之WebView,进度条ProgressBar以及MediaPlayer和SonundPool的使用
原 安卓开发之WebView,进度条ProgressBar以及MediaPlayer和SonundPool的使用 2018年06月06日 15:04:21 阅读数:106 内容比较简单,仅用作笔记,所 ...
- Android/安卓开发之WIFI的基本应用
本文没有涉及到连接WIFI之后进行通讯,若有这方面的想法(例如两个客户端连接至同一WIFI后进行通讯),请关注后续文章一起讨论. 其实关于WIFI的开发的文章也非常的多,但是大部分只是简单的例子,不够 ...
- 安卓开发之IPC机制详解
IPC(Inter-Process Communication),意为进程间通信或者跨进程通信,是指两个进程之间进行数据交换的过程.前面在学习Handler机制时提到过线程与进程的概念,在安卓中一个进 ...
最新文章
- RedHat/CentOS 7通过nmcli命令管理网络教程
- spring boot 整合mybatis 无法输出sql的问题
- MySQL数据库(十) 一一 数据库的导出和导入
- 《HTTP权威指南》– 8.网关、机器人
- w7怎么查看电脑配置_学室内设计,对电脑配置有何要求?不懂戳这!
- 国内程序员最容易发音错误的单词集合
- shell脚本中的条件测试
- 揭秘:高盛交易员赚取10亿美元利润的神秘“利器”终于公开了
- 翻车实录之Nature Medicine新冠单细胞文献|附全代码
- python打印字符串全排列_Python实现全排列的打印
- spring boot 整合 mybatis
- smokeping安装方法及不出图解决办法
- 如何避免在Block里用self造成循环引用
- ubuntu安装dockers和images:dvwa
- MyBatis 安装下载 及入门案例
- cad导出pdf_CAD批量打印插件神器CAD导出PDF插件
- 密码学术语中英文对照(持续更新中)
- DPI与DFI技术分析
- 如何免ROOT,实现安卓设备远程控制?
- 麦克风有电流声怎么办?
热门文章
- 用阿里云盘,找不到资源怎么办???
- 小米刷原生android系统下载地址,小米6刷原生安卓8.0下载|小米6刷原生安卓p 免费版_附教程_最火软件站...
- 时钟天气小插件显示没服务器,天气时钟小插件大全
- Adobe Flash CS6 下载与安装教程
- fh 幅频特性曲线怎么画fl_只要有上、下限截止频率fH、fL、中频电压增益和(),就可绘出基本共射放大电路的幅频特性曲线...
- Java输入输出流体系
- Python小练习——电影数据集TMDB预处理
- 《推荐系统实战(一)》基于统计的电影推荐系统(tmdb-5000数据集,数据清洗、特征提取、搭建模型等详细过程)
- 正在启动python的代码补全客户端_让 python 命令行也可以自动补全
- 软件开发的一些感想(五年工作总结版)