作为初级Android应用开发者,我知道当我们使用gridview
或listview
时,我们应该使用ViewHolder来优化性能。当我想构建一个具有多选的gridview时,我发现滚动gridview后所选的视图会被更改,所以我想知道system gallery如何实现这个目的。但是从getView()
中的GalleryPickerAdapter
功能我可以看到它没有使用ViewHolder,为什么谷歌工程师不使用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;
}
答案 0 :(得分:0)
ViewHolder不是必须在gridview和listview中实现的东西,但它只是在findViewById中节省时间的好方法。
现在,您可以实施强制使用RecyclerView的ViewHolder。