问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

android recyclerview 可以添加footer吗

发布网友 发布时间:2023-05-03 08:46

我来回答

1个回答

热心网友 时间:2023-10-19 02:11

  使用过RecyclerView的同学就知道它并没有添加header和footer的方法,而ListView和GirdView都有,但是开发过程中难免有需求需要添加一个自定义的header或者footer,或者不同布局的Item。
  好了,我们知道如果在ListView中要添加不同的布局的item,都是通过重写getItemViewType()和getViewTypeCount()这两个方法来控制的,OK,对于RecyclerView,还是用这个方法来做,分别对不同的Item用不同的flag标记,然后在创建和绑定数据时候分别对不同的flag对应不同的处理,直接上代码(这里我添加了header和footer):
RecyclerView.Adapter
publicclassRecyclerViewAdapterextendsRecyclerView.Adapter<RecyclerViewAdapter.RecyclerViewHolder> {private List<String> datas;
privatestaticfinalint IS_HEADER = 2;
privatestaticfinalint IS_FOOTER = 3;
privatestaticfinalint IS_NORMAL = 1;
publicRecyclerViewAdapter(List<String> datas) {
this.datas = datas;
}

@Overridepublic RecyclerViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
RecyclerViewHolder holder;
//对不同的flag创建不同的Holderif (viewType == IS_HEADER) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.layout_header, viewGroup, false);
holder = new RecyclerViewHolder(view,IS_HEADER);
return holder;
} elseif (viewType == IS_FOOTER) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.layout_footer, viewGroup, false);
holder = new RecyclerViewHolder(view,IS_FOOTER);
return holder;
}elseif(viewType==IS_NORMAL){
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.layout_item, viewGroup, false);
holder = new RecyclerViewHolder(view,IS_NORMAL);
return holder;
}
returnnull;
}

@OverridepublicvoidonBindViewHolder(final RecyclerViewHolder recyclerViewHolder, int position) {
//对不同的Item相应不同的操作if(position!=0&&position!=datas.size()+1&&recyclerViewHolder.viewType==IS_NORMAL){
recyclerViewHolder.mTextView.setText(datas.get(position - 1));
}
if(position==0&&recyclerViewHolder.viewType==IS_HEADER){
//header
recyclerViewHolder.mButton.setOnClickListener(new View.OnClickListener() {
int i=0;
@OverridepublicvoidonClick(View v) {
recyclerViewHolder.mButton.setText(++i+"");
}
});
}
if(position==datas.size()+1&&recyclerViewHolder.viewType==IS_FOOTER){
//footer
}

}

@OverridepublicintgetItemCount() {
return datas.size() + 2;

}

@OverridepublicintgetItemViewType(int position) {
if (position == 0) {
return IS_HEADER;
} elseif(position==datas.size()+1){
return IS_FOOTER;
}else {
return IS_NORMAL;
}
}

class RecyclerViewHolder extends RecyclerView.ViewHolder {
public TextView mTextView;
public Button mButton;
publicint viewType;
publicRecyclerViewHolder(View itemView,int viewType) {
super(itemView);
this.viewType = viewType;
if(viewType==IS_HEADER){
mButton = (Button) itemView.findViewById(R.id.button);
}
if(viewType==IS_FOOTER){
//do some sthing
}
if(viewType==IS_NORMAL){
mTextView = (TextView) itemView.findViewById(R.id.tv_content);
}
}
}
}
RecyclerView.ViewHolder
classRecyclerViewHolderextendsRecyclerView.ViewHolder {public TextView mTextView;
public Button mButton;
publicint viewType;
public RecyclerViewHolder(View itemView,int viewType) {
super(itemView);
this.viewType = viewType;
if(viewType==IS_HEADER){
mButton = (Button) itemView.findViewById(R.id.button);
}
if(viewType==IS_FOOTER){
//do some sthing
}
if(viewType==IS_NORMAL){
mTextView = (TextView) itemView.findViewById(R.id.tv_content);
}
}
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
女人梦见蛇的七大预兆解梦 PHOTOSHOP 怎么把眼睛点大 这些月销量10000+的防晒霜,是噱头还是真的好用? 大宝水凝保湿防晒露适合哪些肤质的人使用? 拥有人口过亿的国家最多的大洲是( )A.非洲B.亚洲C.欧洲D.大洋 世界国家最多的大洲是:( ) A.亚洲 B.大洋州 C.非洲 D.欧 拥有人口过亿的国家最多的大洲是:( ) A.非洲 B.亚洲 C.欧洲 D.大洋 餐厅一般中餐都有哪些摆台要求和标准 如何做味道正宗的中餐? 河南文科跟理科高考分数线相差多少 el-card怎么横向竖向排列 jquery添加和删除行 延安一千万的公司有那几家 张颖多少岁了?彩讯股份副总经理 北京百望企服科技有限公司怎么样 刑大是什么单位 中空玻璃是钢化的吗 中国经济步入“较快下行通道”什么意思啊? 水流速度是多少 克强中国经济指数是什么意思? 中国的经济放缓是什么意思 15w反向充电可以给笔记本充电吗 thinkpadtypec反充电 显示器反向充电笔记本合盖可以吗 适合在办公室吃的小零食有哪些? 适合办公室常备的小零食 适合办公室吃的小零食有哪些? 有哪些适合在办公室吃的小零食? 哪些零食适合公司茶话会使用 座位险保额1万,超出部分怎么赔花费3万 &lt;div id=&quot;footer&quot;&gt; &lt;div id=&quot;copyright&quot;&gt; &lt;div id=&quot;copylogo&quot;&gt; 各是什么意思?怎么个用法? dnf私服登录不了怎么解决 异动是什么意思? 异动的解释 我国的几何中心是哪 兰州是中国的几何中心怎么确定的 兰州在中国的几何中心吗? 什么是城市几何中心? 猪头排这么好吃是怎么做出来的想学温州永嘉猪头排哪里有培训点 西方人是哪里人 西方人是什么意思 男友在冷战后说“我就是要磨一磨你”是什么意思? 分手后男生说我的热情已经被磨没了,我是被迫磨的。是什么意思? 问道为什么嘲讽对其他人没用 问道嘲讽技能会闪躲吗 r语言加了sep参数为什么仍只有一列 广东一网约车乘客在高速公路上跳车,乘客跳车的原因是什么? 为什么坐在汽车里在高速路上想往外跳? 日本止汗石用到后面弄不出来 刚在专柜买的 但是扫码扫不出来