为什么系统的Gallery app中的gridview不使用viewholder?

时间:2015-07-27 15:05:55

标签: android gridview

作为初级Android应用开发者,我知道当我们使用gridviewlistview时,我们应该使用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;
}

1 个答案:

答案 0 :(得分:0)

ViewHolder不是必须在gridview和listview中实现的东西,但它只是在findViewById中节省时间的好方法。

现在,您可以实施强制使用RecyclerViewViewHolder