ListView中adapter的getView()複用item原理
阿新 • • 發佈:2019-02-08
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原始碼
在閱讀之後,我再自己看了下程式碼,整理了一張圖片。