listView使用及优化的浅显理解
来源:互联网 发布:在线vip视频解析源码 编辑:程序博客网 时间:2024/05/21 11:04
listView使用及优化的浅显理解
先来说下我对listview简单的理解
代码一般由三部分成:
- 子项布局文件
- 重写的适配器类
- 数据类(存放要在listview中显示的数据)
- 再就是在活动中写的listview部分的代码
先说一下listview要做的事
listview只是提供了显示的功能,其他所有的东西基本都是直接交给adapter去实现的,因为listview并不能事先知道你数据的类型和布局的类型,如果这些东西都交给listview去实现的话,代码明显会变得非常繁琐,listview做的事只是将他需要的适配器拿到就OK了
看一下adapter做的事
public class MyAdapter extends ArrayAdapter<things> { private int ResourceID; public MyAdapter(Context context, int ResourceID, List<things> thingsList){ super(context,ResourceID,thingsList); this.ResourceID = ResourceID; } @Override public View getView(int position, View convertView, ViewGroup parent) { things things = getItem(position); View view; ViewHolder viewHolder; if(convertView == null){ view = LayoutInflater.from(getContext()).inflate(ResourceID,parent,false); viewHolder = new ViewHolder(); viewHolder.s = view.findViewById(R.id.wenzixianshi); view.setTag(viewHolder); }else { view = convertView; viewHolder = (ViewHolder) view.getTag(); } viewHolder.s.setText(things.getS()); return view; } class ViewHolder{ TextView s; }}
adapter做的事就是将一个个子项view创建并显示,
- 刚开始adapter会去创建一个集合,然后创建一个子项view之后(计算他所占的屏幕大小)并将之加到集合中
- 当检查到屏幕没有多余空间的时候,就停止创建view,然后将之显示在listview中(这里的顺序不是特别清楚)
- 当程序检测到listview滑动的时候,会通过参数position来确定此时接下来需要显示的view需要填充哪一个数据项
- 此时会有一个view被滑出屏幕空间,就会被添加到一个叫做view回收的集合中
- 此时在convertView返回的参数就不是空了,他所带的内容是view回收集合中的应经被回收的view,此时就不需要重新传建新的view实例了,会大大的省略时间
- 这里我用了一个内部类去保存每个view的数据,以便下次就不需要用findviewByID()去寻找控件了,将这个内部类绑定到view上面
- 这样的话就是每个view都会带一个数据类,然后当快速滑动的时候,每次都只是通过参数position拿到当前数据项,给view的ViewHolder赋值,相对来说会快捷很多吧
这里还是上图弥补一下我的语文水平吧
阅读全文
0 0
- listView使用及优化的浅显理解
- ListView 的优化及使用
- ListView的使用及优化
- UITableView 的浅显理解
- listview的优化及viewholder的使用
- Android 中 ListView的使用及优化
- Android中ListView的使用及优化
- RAC的浅显使用
- Redis浅显的使用
- ThreadLocal的直观浅显理解
- 对于递归的浅显理解
- socket浅显的自我理解
- 对MQ的浅显理解
- 对Binder的浅显分析及AIDL的使用
- ListView使用及性能优化
- Android--Adapter深入理解及ListView优化
- ListView 的优化使用
- ListView的优化及显示
- 小米6官方海报和上手视频大曝光,原来这就是“四曲面”
- 我们看过500家医疗健康公司,趟过这3大陷阱的公司都成功了!
- myeclipse2015配置spring异常
- CCF考试——201709-1打酱油
- python偶数迭代器
- listView使用及优化的浅显理解
- 那个作为虚拟个人助理的出门问问又回来了,这次它想要无处不在
- 懒加载
- Azure在华扩张激进,微软大中华区CEO宣布一年内规模翻倍
- Java 常用工具类 Collections 源码分析
- 多分类学习、类别不平衡
- 23岁INFP职业规划:我最大的困惑是“物质与理想”之间的矛盾
- kafka集群部署
- java中的构造方法