Android RecyclerView.Adapter onCreateViewHolder()工作

前端之家收集整理的这篇文章主要介绍了Android RecyclerView.Adapter onCreateViewHolder()工作前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用RecyclerView.Adapter,但我对在CreateViewHolder上的方法工作感到困惑.
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup,int viewType) {
    if(viewType==TYPE_ITEM) {

        View mView = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.inflate_common_item,viewGroup,false);
        ViewHolder vh = new ViewHolder(mView);
        return vh;

    } else {
        View mView = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.inflate_uncommon_item,false);
        ViewHolderFooter vh = new ViewHolderFooter(mView);
        return vh;

    }
}

所以我在我的列表中有10个项目,所以每个项目这个方法将被调用,并且每当一个新的ViewHolder将被创建当然,它将有一次为每个视图,但现在我的问题是当我们使用ListView和BaseAdapter与我们将ViewHolder存储在标签中并使用它.我们不会为每个项目创建ViewHolder.

@Override
    public View getView(int position,View convertView,ViewGroup parent) {
            MyViewHolder mViewHolder;

            if(convertView == null) {
                    convertView = inflater.inflate(R.layout.layout_list_item,null);
                    mViewHolder = new MyViewHolder();
                    convertView.setTag(mViewHolder);
            } else {
                    mViewHolder = (MyViewHolder) convertView.getTag();
            }

            mViewHolder.tvTitle = detail(convertView,R.id.tvTitle,myList.get(position).getTitle());
            mViewHolder.tvDesc  = detail(convertView,R.id.tvDesc,myList.get(position).getDescription());
            mViewHolder.ivIcon  = detail(convertView,R.id.ivIcon,myList.get(position).getImgResId());

            return convertView;
    }

所以我们不会创建额外的观看者对象.请帮我理解利弊.

谢谢

解决方法

当没有RecyclerView可以重用的现有视图持有者时,onCreateViewHolder仅创建一个新的视图持有者.所以,例如,如果您的RecyclerView可以一次显示5个项目,它将创建5-6个ViewHolders,然后自动重新使用它们,每次调用onBindViewHolder.

它类似于ListView中的代码(检查convertView是否为null,如果没有,请从标签中抓取现有的ViewHolder),但使用RecyclerView,这一切都将自动完成.

我想这是使用RecyclerView的专业人士之一 – 您不必担心像ViewView那样重用ViewHolders. con Rec RecyclerView是非常可定制的,但内置功能很少 – 与ListView不同,它不是很可定制的,但内置了很多功能.

原文链接:https://www.f2er.com/android/312562.html

猜你在找的Android相关文章