Android RecyclerView加载两种布局的方法
当RecyclerView有下拉刷新时,有时候设计图上,体现出来的列表有头部布局,这可以通过Adapter实现加载多套布局就可以,这里以加载两种布局为例说明。
先看看Adapter的代码:
importandroid.annotation.SuppressLint; importandroid.content.Context; importandroid.support.v7.widget.RecyclerView; importandroid.view.LayoutInflater; importandroid.view.View; importandroid.view.ViewGroup; importandroid.widget.BaseAdapter; importcom.alvin.R; importjava.util.ArrayList; importjava.util.List; publicclassMainListAdapterextendsRecyclerView.Adapter<RecyclerView.ViewHolder>{ privateList<Data>list; privateArrayList<ItemEntity>jdList; privateContextcontext; publicMainListAdapter(List<Data>list,ArrayList<ItemEntity>jdList,Contextcontext){ this.list=list; this.jdList=jdList; this.context=context; } @Override publicintgetItemViewType(intposition){ returnlist.get(position).getShowType(); } @Override publicRecyclerView.ViewHolderonCreateViewHolder(ViewGroupparent,intviewType){ if(viewType==1){ Viewview=LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_header_main_list,parent,false); returnnewHeaderHolder(view); }else{ Viewview=LayoutInflater.from(parent.getContext()).inflate(R.layout.item_list_main,parent,false); returnnewViewHolderItem(view); } } @Override publicvoidonBindViewHolder(RecyclerView.ViewHolderholder,intposition){ if(holderinstanceofHeaderHolder){ finalHeaderHolderheaderHolder=(HeaderHolder)holder; //TODO实现相关逻辑 }elseif(holderinstanceofViewHolderItem){ } } @Override publicintgetItemCount(){ returnlist.size(); } privateclassHeaderHolderextendsRecyclerView.ViewHolder{ HeaderHolder(ViewitemView){ super(itemView); } } privateclassViewHolderItemextendsRecyclerView.ViewHolder{ ViewHolderItem(ViewitemView){ super(itemView); } } }
getItemViewType()这个返回的是列表当前布局类型,在Adapter加载布局时,对齐进行判断,也就是onBindViewHolder()方法中进行相应的判断逻辑实现。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。