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
在阅读之后,我再自己看了下代码,整理了一张图片。