listview优化

来源:互联网 发布:怪物猎人3数据库 编辑:程序博客网 时间:2024/06/06 01:02

①在 Listview 的优化中,我们为何使用 ConvertView?
A:①使用 ConvertView 可以实现对 view 的复用,这样大大节约了每次创建
对象的时间,提升了 ListView 的显示效率。
②为何使用ViewHolder?
②使用 ViewHolder 作为内部类,可以将 view 的子控件封装在 ViewHolder 类中,然后通过View.setTag(ViewHolder)将 view 和 ViewHolder 进行绑定,这样我们就不
用每次都调用 view 的 findViewById(id)方法来查找控件。
③你认为哪个更能解决问题?
③使用ConvertView 解决了一大部分问题,使用 ViewHolder 实现了控件换时间的问题,因为给 View 对象设置一个 Tag 本身就是占用内存的,因此 ViewHolder
的使用还是需要区分不同的应用场景的,没有绝对的好与不好。如果内存足够需要高效则 ViewHolder 建议使用,否则不建议使用。
④你认为view.inflate和 view.findviewById 哪个更耗时,为什么?
④当然是 view.inflate耗时,这个函数完成的功能是把 xml 布局文件通过 pullParser 的形式给解析到内存中,需要 io,需要递归子节点。
⑤如果这两个 AP 让你重新写,你怎么写?
⑤我其实还不太相信我写出来的代码比Google官方写的好,如果让我写的话我可能会这样考虑,当用户在使用view.inflate 的时候将多个 id 作为数组添加到形参中,这样在初始化 view 的使用我就可以给这个 view 直接调用 setTag 方法绑定需要的子控件。不过这个原生方法其实也应该保留共不同的需求使用。

0 0
原创粉丝点击