listView原理记录

阅读更多
转载自: https://blog.csdn.net/guolin_blog/article/details/44996879


-listView和adapter是为了解耦,一个负责视图,一个负责数据绑定
-listView通过RecycleBin来不断填充可见item,以及循环废弃item。
-AbsListView的onlayout来实现绘制item。ListView的onlayout根据dataChanged是否数据有更新,进行对可见item的填充。
-填充可见item时,
View obtainView(int position, boolean[] isScrap) {
	isScrap[0] = false;
	View scrapView;
	scrapView = mRecycler.getScrapView(position);
	View child;
	if (scrapView != null) {
		child = mAdapter.getView(position, scrapView, this);
		if (child != scrapView) {
			mRecycler.addScrapView(scrapView);
			if (mCacheColorHint != 0) {
				child.setDrawingCacheBackgroundColor(mCacheColorHint);
			}
		} else {
			isScrap[0] = true;
			dispatchFinishTemporaryDetach(child);
		}
	} else {
		child = mAdapter.getView(position, null, this);
		if (mCacheColorHint != 0) {
			child.setDrawingCacheBackgroundColor(mCacheColorHint);
		}
	}
	return child;
}

会跟根据是否有废弃的item,来传给adapter是否可有convertView利用

-之后每次onlayout时,detachAllViewsFromParent将所有item解绑,填充好可见item后,再绑定



listView原理记录_第1张图片
  • listView原理记录_第2张图片
  • 大小: 12.7 KB
  • 查看图片附件

你可能感兴趣的:(listView原理记录)