作为一名初级的Android应用程序开发人员,我知道何时使用gridview
或listview
应该使用ViewHolder来优化性能。当我想用多重选择构建一个gridview时,我发现在滚动gridview后选定的视图被改变了,所以我想知道系统库是如何实现这个目的的。但是从getView()
功能上GalleryPickerAdapter
我可以看到它不使用ViewHolder,为什么Google工程师不使用ViewHolder?
public View getView(final int position, View convertView,
ViewGroup parent) {
View v;
if (convertView == null) {
v = mInflater.inflate(R.layout.gallery_picker_item, null);
} else {
v = convertView;
}
TextView titleView = (TextView) v.findViewById(R.id.title);
GalleryPickerItem iv =
(GalleryPickerItem) v.findViewById(R.id.thumbnail);
Item item = mItems.get(position);
iv.setOverlay(item.getOverlay());
if (item.mThumbBitmap != null) {
iv.setImageBitmap(item.mThumbBitmap);
String title = item.mName + " (" + item.mCount + ")";
titleView.setText(title);
} else {
iv.setImageResource(android.R.color.transparent);
titleView.setText(item.mName);
}
// An workaround due to a bug in TextView. If the length of text is
// different from the previous in convertView, the layout would be
// wrong.
titleView.requestLayout();
return v;
}
ViewHolder并不是必须在gridview和listview中实现的东西,但是它只是在findViewById期间节省时间的好方法。
现在,您可以实现RecyclerView,强制您使用ViewHolder。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句