getView 经典写法
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final ViewHolder holder
if (convertView == null) {
convertView = inflater
.inflate(R
.layout.atom_alexhome_new_customer_module_a_grid_item, parent, false)
holder = new ViewHolder()
holder
.tvTitle = (TextView) convertView
.findViewById(R
.id.tv_title)
holder
.tvSubTitle = (TextView) convertView
.findViewById(R
.id.tv_subtitle)
holder
.img = (SimpleDraweeView) convertView
.findViewById(R
.id.image)
holder
.tvFetchNow = (TextView) convertView
.findViewById(R
.id.tv_fetch_now)
convertView
.setTag(holder)
} else {
holder = (ViewHolder) convertView
.getTag()
}
ModuleAItem bean = list
.get(position)
holder
.tvTitle.setText(bean
.title)
holder
.tvTitle.setTextColor(Color
.parseColor(bean
.titleColor))
holder
.tvSubTitle.setText(bean
.subtitle)
holder
.tvSubTitle.setTextColor(Color
.parseColor(bean
.subtitleColor))
return convertView;
可以看出有一个对convertView的判空操作,如果不为null,就复用。那么我们要知道为啥有时候他不是null
深入listview源码
建议阅读源码之前先看看别人博客怎么分析的,有人引路总是好事。 http://blog.csdn.net/guolin_blog/article/details/44996879#t0
在阅读之后,我再自己看了下代码,整理了一张图片。