实现BaseAdapter 引入ViewHolder
属性
- 上下文环境Context类型
- 数据集合 一般为list
- 布局(id形式提供):整型
生成构造方法顺序:环境 布局 数据源
Adapter需要重写的方法
- getCount()
- getItem(int position) 返回的是position
- getView():每填充一个item其中的控件的时候这个方法就会被调用,返回的是convertView
- 加载item布局文件,赋值给convertView:
convertView = LayoutInflater.from(context).inflate(layout,null); - 创建item中的控件对象
控件 = convertView.findViewById(); - 给控件对象赋值
- 加载item布局文件,赋值给convertView:
这个方法很消耗性能,如果尤其是在控件较多的时候,这个方法在反复执行,可以在外面加上null的判断,可以减少调用的次数 (加载次数是控件的个数)
可以在adapter中创建一个类ViewHolder
- ViewHolder类:(静态,为了使保存时间长)
- 用于存储item的控件
- 在convertView中缓存holder对象:convertView.setTag()//因为convertView的存活时间长
- 虽然getView方法不会比判断null 的时候减少调用次数,但是其中的控件不会被反复创建
MainActivity
- onCreate
- 初始化list
- 实例化adapter
SmartRefreshLayout简介
- 作用:实现刷新样式:下拉刷新 上拉加载
- 查找maven: 浏览器搜maven- Maven Repository: Search/Browse/Explore - 搜索SmartRefreshLayout 即可出现
不建议选择最新版的
1.1.0:
切换为Project视图
优先级:application-xml-Java代码(低到高)