0%

Android开发 ListView显示不同类型的项(Adapter的getItemViewType,getViewTypeCount)用法

之前写代码都没有很注意性能的问题,以后这方面会多关注一些。 如果要在ListView显示布局完全不同的Item,我之前的做法是在getView里先判断那个position的对象是哪一个类型,再相应的inflate对应的xml,但这样有个问题,就是没法复用convertView,因为可能会混乱。 今天发现其实Adapter有getItemViewType和getViewTypeCount方法,看名字就知道功能了,一个是获取该项的类型,另一个是获取类型的数量。 所以,使用很简单,第一步,在自定义的Adapter里继承这两个方法,并实现。getItemViewType返回的值不能是自定义的,必须从0开始增长。 第二步,在getView方法里,根据getItemViewType返回的类型,分别inflate对应的xml,如果convertView不为空,可以直接使用.另外,建议使用ViewHolder保存控件引用,使用convertView.setTag(holder)方法保存到convertView上,可以减少不必要的findViewById.