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()方法中进行相应的判断逻辑实现。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。