ListView学习笔记(二)—— ConvertView

本文探讨了Android中ListView的ConvertView概念及其作用,它用于重用item视图以提高性能。在自定义ListView样式时,重写ListView Adapter的getView方法会遇到ConvertView带来的挑战,包括其执行顺序的不确定性。文章揭示了ConvertView的特性,如保存所有历史实例并按时间顺序使用,以及如何应对需求变化,如根据itemid实现不同样式。提出了两种策略:不使用ConvertView直接实例化新View,或通过外部数组保存和复用View信息。
摘要由CSDN通过智能技术生成

在Android的UI组件中,ListView是一个非常实用的组件。该组件主要是用于展示大批量的同类数据,比如联系人信息。

而在自定义ListView的样式时,需要重写数据接口的ListAdapter类中的getView函数,以此来定制ListView中每个item的样式。在这里Android系统为了效率的原因引进了ConvertView这一个变量。ConvertView在这里主要的作用就是方便系统在重写UI时,能重用原来实用过的View实例,以此来降低系统资源的消耗和提高代码效率。

但是当你希望根据itemid实现不同的样式时,往往会出现一些意想不到的情况。这主要是因为两方面的原因导致的

  1. Andorid并不保证getView的执行顺序
  2. 因为getView的不确定性,导致ConvertView的循序可能是无序的。

简单解释ConvertView就是最近使用过的getView函数返回的实例,但是Andorid是怎样决定使用那个实例传递给本次getView函数的呢?

在经过试验后,我发现关于ConvertView的几点特征。

  1. 对于一个ListView,Android保存所有曾经生成过的ConvertView实例,直至系统垃圾回收这些实例位置,而不是只保存最后使用的ConvertView对象。
  2. 这些保存的ConvertView以使用时间顺序排序,并依次被传递到getView函数中。
以一个简单的例子来会更直观,

我有一列String需要展示
String[] content = {"1","
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值