android 怎么给headerview添加适配器

 我来答
约定20125
2016-12-22 · TA获得超过1.5万个赞
知道大有可为答主
回答量:1.1万
采纳率:96%
帮助的人:3096万
展开全部
首先是RecyclerView的ViewHolder(这里面的方法可以根据自己需要进行添加)

importandroid.graphics.Bitmap;
importandroid.graphics.drawable.Drawable;
importandroid.os.Build;
importandroid.support.v7.widget.RecyclerView.ViewHolder;
importandroid.text.Spanned;
importandroid.util.SparseArray;
importandroid.view.View;
importandroid.view.animation.AlphaAnimation;
importandroid.widget.Checkable;
importandroid.widget.CheckedTextView;
importandroid.widget.ImageView;
importandroid.widget.TextView;publicclassBaseHolderextendsViewHolder{
privateSparseArraymViews;
privateViewmConvertView;
publicBaseHolder(ViewmConvertView){
super(mConvertView);
this.mConvertView=mConvertView;
this.mViews=newSparseArray<>();
}publicTgetView(intviewId){
Viewview=mViews.get(viewId);
if(null==view){
view=mConvertView.findViewById(viewId);
mViews.put(viewId,view);
}
return(T)view;
}
/**
*设置TextView的内
*
*@paramviewId控件id
*@paramtext文本内容
*@returnViewHolder
*/
publicBaseHoldersetText(intviewId,Stringtext){
TextViewview=getView(viewId);
view.setText(text);
returnthis;
}
/**
*设置TextView的内
*
*@paramviewId控件id
*@paramspanned文本内容
*@returnBaseHolder
*/
publicBaseHoldersetText(intviewId,Spannedspanned){
TextViewview=getView(viewId);
view.setText(spanned);
returnthis;
}
/**
*设置TextView的内
*
*@paramviewId控件id
*@paramresId资源文件中的id
*@returnBaseHolder
*/
publicBaseHoldersetText(intviewId,intresId){
TextViewview=getView(viewId);
view.setText(resId);
returnthis;
}
/**
*@paramviewId控件id
*@paramresId资源文件中的id
*@returnBaseHolder
*/
publicBaseHoldersetImageResource(intviewId,intresId){
ImageViewview=getView(viewId);
view.setImageResource(resId);
returnthis;
}
/**
*@paramviewId控件id
*@parambitmap图片的的Bitmap
*@returnBaseHolder
*/
publicBaseHoldersetImageBitmap(intviewId,Bitmapbitmap){
ImageViewview=getView(viewId);
view.setImageBitmap(bitmap);
returnthis;
}
/**
*@paramviewId控件id
*@paramdrawable图片的的Drawable
*@returnBaseHolder
*/
publicBaseHoldersetImageDrawable(intviewId,Drawabledrawable){
ImageViewview=getView(viewId);
view.setImageDrawable(drawable);
returnthis;
}
/**
*给控件设置tag
*
*@paramviewId控件id
*@paramobjtag
*@returnViewHolder
*/
publicBaseHoldersetTag(intviewId,Objectobj){
Viewview=getView(viewId);
view.setTag(obj);
returnthis;
}
/**
*给控件设置OnClickListener
*
*@paramviewId控件id
*@paramlistener点击事件
*@returnViewHolder
*/
publicBaseHoldersetClickListener(intviewId,View.OnClickListenerlistener,Objecttag){
Viewview=getView(viewId);
view.setOnClickListener(listener);
view.setTag(tag);
returnthis;
}
/**
*给控件设置OnClickListener
*
*@paramviewIds控件ids
*@paramlistener点击事件
*@returnViewHolder
*/
publicBaseHoldersetClickListener(View.OnClickListenerlistener,Objecttag,int...viewIds){
for(intviewId:viewIds){
Viewview=getView(viewId);
view.setTag(tag);
view.setOnClickListener(listener);
}
returnthis;
}
/**
*设置选中
*
*@paramchecked是否选择
*@paramviewIdsview的Id
*@returnBaseHolder
*/
publicBaseHoldersetChecked(booleanchecked,int...viewIds){
for(intviewId:viewIds){
Checkableview=getView(viewId);
view.setChecked(checked);
}
returnthis;
}
/**
*设置view可见
*
*@paramvisible是否看见
*@paramviewIdsview的Id
*@returnBaseHolder
*/
publicBaseHoldersetVisibility(booleanvisible,int...viewIds){
for(intviewId:viewIds){
setVisible(viewId,visible);
}
returnthis;
}
publicBaseHoldersetVisible(intviewId,booleanvisible){
Viewview=getView(viewId);
view.setVisibility(visible?View.VISIBLE:View.GONE);
returnthis;
}publicBaseHoldersetAlpha(floatvalue,int...viewIds){
for(intviewId:viewIds){
setAlpha(viewId,value);
}
returnthis;
}
publicBaseHoldersetAlpha(intviewId,floatvalue){
if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.HONEYCOMB){
getView(viewId).setAlpha(value);
}else{
AlphaAnimationalpha=newAlphaAnimation(value,value);
alpha.setDuration(0);
alpha.setFillAfter(true);
getView(viewId).startAnimation(alpha);
}
returnthis;
}
publicBaseHoldersetImageLevel(intviewId,intlevel){
ImageViewview=getView(viewId);
view.setImageLevel(level);
returnthis;
}
publicBaseHoldersetSelected(intviewId,booleanselected){
CheckedTextViewview=getView(viewId);
view.setSelected(selected);
returnthis;
}
}

然后就是关键的Adapter了

packagecom.retail.wumartmms.adapter;
importandroid.support.v7.widget.GridLayoutManager;
importandroid.support.v7.widget.RecyclerView;
importandroid.support.v7.widget.StaggeredGridLayoutManager;
importandroid.view.LayoutInflater;
importandroid.view.View;
importandroid.view.ViewGroup;
importcom.retail.wumartmms.utils.ArrayUtil;
importcom.retail.wumartmms.utils.CommonUtils;
importjava.util.ArrayList;
importjava.util.List;
publicabstractclassLBaseAdapterextendsRecyclerView.Adapter{
publicstaticfinalintTYPE_HEADER=0;
publicstaticfinalintTYPE_NORMAL=1;
protectedintlayoutId;
protectedListmDatas;
protectedViewmHeaderView;
protectedViewemptyView,networkView;
publicLBaseAdapter(intlayoutId){
this.mDatas=newArrayList<>();
this.layoutId=layoutId;
}
publicvoidsetHeaderView(ViewheaderView){
mHeaderView=headerView;
notifyItemInserted(0);
}
publicViewgetHeaderView(){
returnmHeaderView;
}
publicvoidaddItems(Listitems){
if(ArrayUtil.isNotEmpty(items)){
intoldCont=mDatas.size();
mDatas.addAll(items);
if(oldCont==0){
notifyDataSetChanged();
}else{
notifyItemRangeChanged(oldCont,mDatas.size());
}
}
}
publicvoidaddItem(Titem){
mDatas.add(item);
notifyDataSetChanged();
}
publicvoidaddItems(Listitems,booleanisRefresh){
if(isRefresh){
mDatas.clear();
notifyDataSetChanged();
}
addItems(items);
}
publicvoidshowEmptyView(){
if(null!=networkView)
networkView.setVisibility(CommonUtils.isNetworkAvailable(networkView.getContext())?View.GONE:View.VISIBLE);
if(null!=emptyView){
if(null!=networkView&&networkView.getVisibility()==View.VISIBLE){
emptyView.setVisibility(View.GONE);
return;
}
emptyView.setVisibility(isEmpty()?View.VISIBLE:View.GONE);
}
}@Override
publicintgetItemViewType(intposition){
if(mHeaderView==null)returnTYPE_NORMAL;
if(position==0)returnTYPE_HEADER;
returnTYPE_NORMAL;
}
@Override
publicBaseHolderonCreateViewHolder(ViewGroupparent,finalintviewType){
if(mHeaderView!=null&&viewType==TYPE_HEADER)
returnnewBaseHolder(mHeaderView);
ViewmView=LayoutInflater.from(parent.getContext()).inflate(layoutId,parent,false);
BaseHolderbaseHolder=newBaseHolder(mView);
baseHolder.itemView.setOnClickListener(newView.OnClickListener(){
@Override
publicvoidonClick(Viewview){
ObjectvTag=view.getTag();
if(vTag!=null&&vTaginstanceofInteger)
onItemClick(mDatas.get(Integer.valueOf(vTag.toString())));
}
});
returnbaseHolder;
}
protectedvoidonItemClick(Tt){
}
@Override
publicvoidonBindViewHolder(BaseHolderbaseHolder,intposition){
if(getItemViewType(position)==TYPE_HEADER)return;
intpos=getRealPosition(baseHolder);
baseHolder.itemView.setTag(pos);
onBind(baseHolder,pos,mDatas.get(pos));
}
@Override
publicvoidonAttachedToRecyclerView(RecyclerViewrecyclerView){
super.onAttachedToRecyclerView(recyclerView);
RecyclerView.LayoutManagermanager=recyclerView.getLayoutManager();
if(managerinstanceofGridLayoutManager){
finalGridLayoutManagergridManager=((GridLayoutManager)manager);
gridManager.setSpanSizeLookup(newGridLayoutManager.SpanSizeLookup(){
@Override
publicintgetSpanSize(intposition){
returngetItemViewType(position)==TYPE_HEADER
?gridManager.getSpanCount():1;
}
});
}
}
@Override
publicvoidonViewAttachedToWindow(BaseHolderbaseHolder){
super.onViewAttachedToWindow(baseHolder);
ViewGroup.LayoutParamslp=baseHolder.itemView.getLayoutParams();
if(lp!=null
&&lpinstanceofStaggeredGridLayoutManager.LayoutParams
&&baseHolder.getLayoutPosition()==0){
StaggeredGridLayoutManager.LayoutParamsp=(StaggeredGridLayoutManager.LayoutParams)lp;
p.setFullSpan(true);
}
}
publicintgetRealPosition(RecyclerView.ViewHolderholder){
intposition=holder.getLayoutPosition();
returnmHeaderView==null?position:position-1;
}
@Override
publicintgetItemCount(){
returnmHeaderView==null?mDatas.size():mDatas.size()+1;
}
publicabstractvoidonBind(BaseHolderbaseHolder,intrealPosition,Tt);
publicbooleanisEmpty(){
returnArrayUtil.isEmpty(mDatas);
}
publicvoidsetEmptyView(ViewemptyView){
this.emptyView=emptyView;
}
publicTgetItem(intposition){
returnmDatas.get(position);
}
publicvoidsetNetworkView(ViewnetworkView){
this.networkView=networkView;
}
}
大雅新科技有限公司
2024-11-19 广告
这方面更多更全面的信息其实可以找下大雅新。深圳市大雅新科技有限公司从事KVM延长器,DVI延长器,USB延长器,键盘鼠标延长器,双绞线视频传输器,VGA视频双绞线传输器,VGA延长器,VGA视频延长器,DVI KVM 切换器等,优质供应商,... 点击进入详情页
本回答由大雅新科技有限公司提供
百度网友33dab3f
2016-12-22 · TA获得超过1398个赞
知道小有建树答主
回答量:1283
采纳率:76%
帮助的人:680万
展开全部
添加适配器?你要干什么?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式