listview优化

①在 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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值