首页 > IT职业 > IT图书 > RecyclerView 添加头部、底部
RecyclerView 本身是不支持添加底部和头部的,可以对其进行功能扩展,使其能够支持底部和头部的添加:
package com.retrofit.retrofitmaster.ui.view.adapter; import android.support.v7.widget.RecyclerView; import android.view.View; import android.view.ViewGroup; import java.util.ArrayList; /** * author : mjj * create : 2017/10/18:9:09 */ public class WrapRecyclerAdapter extends RecyclerView.Adapter{ // 包装 adapter 是原来的 RecyclerView.Adapter 是并不支持添加头部和底部的 private RecyclerView.Adapter mRealAdapter; ArrayList mHeaderViews; // 头部 ArrayList mFooterViews; // 底部 public WrapRecyclerAdapter(RecyclerView.Adapter adapter) { mRealAdapter = adapter; mHeaderViews = new ArrayList(); mFooterViews = new ArrayList(); } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int position) { // Header (negative positions will throw an IndexOutOfBoundsException) int numHeaders = getHeadersCount(); if (position package com.retrofit.retrofitmaster.ui.view.adapter; import android.content.Context; import android.support.annotation.Nullable; import android.support.v7.widget.RecyclerView; import android.util.AttributeSet; import android.view.View; /** * author : mjj * create : 2017/10/18:10:22 */ public class WrapRecyclerView extends RecyclerView { // 支持添加头部和底部的 RecyclerView.Adapter private WrapRecyclerAdapter mWrapAdapter; public WrapRecyclerView(Context context) { super(context); } public WrapRecyclerView(Context context, @Nullable AttributeSet attrs) { super(context, attrs); } public WrapRecyclerView(Context context, @Nullable AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Override public void setAdapter(Adapter adapter) { // 这里做一个替换 mWrapAdapter = new WrapRecyclerAdapter(adapter); super.setAdapter(mWrapAdapter); } /** * 添加头部View * @param view */ public void addHeaderView(View view){ if(mWrapAdapter != null){ mWrapAdapter.addHeaderView(view); } } /** * 添加底部View * @param view */ public void addFooterView(View view){ if(mWrapAdapter != null){ mWrapAdapter.addFooterView(view); } } /** * 移除头部View * @param view */ public void removeHeaderView(View view){ if(mWrapAdapter != null){ mWrapAdapter.removeHeaderView(view); } } /** * 移除底部View * @param view */ public void removeFooterView(View view){ if(mWrapAdapter != null){ mWrapAdapter.removeFooterView(view); } } }使用
//设置manager wrapRv.setLayoutManager(new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false)); // 实例化头部View View headerView = LayoutInflater.from(this).inflate(R.layout.head_layout, wrapRv, false); // 设置适配器 wrapRv.setAdapter(new RecyclerViewAdapter(this,datas)); // 添加头部 wrapRv.addHeaderView(headerView);
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4222/viewspace-2813413/ ,如需转载,请注明出处,否则将追究法律责任。