ListView中adapter的getView()复用item原理

xiaoxiao2021-02-28  109

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

在阅读之后,我再自己看了下代码,整理了一张图片。

转载请注明原文地址: https://www.6miu.com/read-31290.html

最新回复(0)