android 怎么给headerview添加适配器

android\u600e\u4e48\u52a0headerview

\u3000\u3000\u5728\u4ee3\u7801\u4e2d\u4f7f\u7528 listView .addHeaderView(...)
\u65b9\u6cd5\u53ef\u4ee5\u5728ListView\u7ec4\u4ef6\u4e0a\u65b9\u6dfb\u52a0\u4e0a\u5176\u4ed6\u7ec4\u4ef6\uff0c\u5e76\u4e14\u8fde\u7ed3\u5728\u4e00\u8d77\u50cf\u662f\u4e00\u4e2a\u65b0\u7ec4\u4ef6\u3002\u5982\u679c\u591a\u6b21\u4f7f\u7528 .addHeaderView(...)
,\u5219\u6700\u5148\u6dfb\u52a0\u7684\u7ec4\u4ef6\u5728\u6700\u4e0a\u65b9\uff0c\u6309\u6dfb\u52a0\u7684\u5148\u540e\u987a\u5e8f\u7531\u4e0a\u5230\u4e0b\u7f57\u5217\u3002
\u3000\u3000

\u81ea\u5df1\u5b9a\u4e49\u4e00\u4e2alayout\uff0c\u76f4\u63a5inflate\u540e\uff0clistview\u4e2daddHeaderView

首先是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;
}
}

添加适配器?你要干什么?

扩展阅读:alipay app download ... android app store china ... android下载安装app ... 苹果android在哪里找 ... android苹果版下载 ... android在哪里打开 ... androidtvapp下载 ... android安卓版下载4.0 ... 30000款免费软件下载 ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网