1. 程式人生 > >ListView中adapter的getView()複用item原理

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

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原始碼

在閱讀之後,我再自己看了下程式碼,整理了一張圖片。
這裡寫圖片描述