给RecyclerView添加footView

 

 

项目里有一个需求 在列表的底部添加 更多好课在路上 本来打算直接在xml中在recyclerView 下添加一个布局文件 但是如果recyclerview过高时会顶掉 所以想到了footView 由于recyclerview没有直接提供方法来添加footView 那就自己做 主要内容都在适配器 

 

参考文章 https://blog.youkuaiyun.com/qq_33337504/article/details/79034756

但是这篇文章并不能实现 稍微做了一些修改 如下

首先RecyclerView相当于多了一条数据 返回条目

然后重写 getItemViewType() 这个方法  关于这个函数的介绍我的参考文章里边有 不多做介绍

创建ViewHolder 判断viewType 引用各自的布局文件

ViewHolder

最后赋值

附上完整的适配器

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import com.houdask.judicial.R;
import com.houdask.judicial.entity.LsxyClassPacageListEntity;
import com.houdask.library.utils.GlideUtils;
import com.houdask.library.utils.StringEmptyUtils;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by qzp on 2019/6/13.
 */

public class HomeFragmentPacageListRecyclerAdapter extends RecyclerView.Adapter<HomeFragmentPacageListRecyclerAdapter.MyViewHolder> {

    private static final int FOOT_VIEW = 1;
    private Context context;
    private List<LsxyClassPacageListEntity.PhaseListBean> list = new ArrayList<>();

    public HomeFragmentPacageListRecyclerAdapter(Context context) {
        this.context = context;
    }

    public void addData(List<LsxyClassPacageListEntity.PhaseListBean> data){
        list.clear();
        list.addAll(data);
        notifyDataSetChanged();
    }

    public List<LsxyClassPacageListEntity.PhaseListBean> getData(){
        return list;
    }

    @Override
    public HomeFragmentPacageListRecyclerAdapter.MyViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {

        if (i == FOOT_VIEW){
            View inflate = View.inflate(context, R.layout.homefragment_recyclerview_footview,null);
            return new MyViewHolder(inflate,i);
        } else {
            View inflate = View.inflate(context, R.layout.homefragment_recyclerview_item,null);
            return new MyViewHolder(inflate,i);
        }


    }

    @Override
    public void onBindViewHolder(final HomeFragmentPacageListRecyclerAdapter.MyViewHolder myViewHolder, int i) {

        if (getItemViewType(i) != FOOT_VIEW){
            //设置数据
            GlideUtils.imageLoader(context,StringEmptyUtils.isEmptyResuleString(list.get(i).getImage()),myViewHolder.imageView);
            myViewHolder.title.setText(StringEmptyUtils.isEmptyResuleString(list.get(i).getPhaseName()));
            myViewHolder.teacher.setText("讲师:" + StringEmptyUtils.isEmptyResuleString(list.get(i).getTeacherName()));
            myViewHolder.classNum.setText("共" + list.get(i).getVideoNum() + "节课");

            if (mOnClickListener != null) {
                myViewHolder.itemView.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        int pos = myViewHolder.getLayoutPosition();
                        mOnClickListener.onItemClickListener(myViewHolder.itemView, pos);
                    }
                });

                myViewHolder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
                    @Override
                    public boolean onLongClick(View v) {
                        int poss = myViewHolder.getLayoutPosition();
                        mOnClickListener.onLongItemClickListener(myViewHolder.itemView,poss);
                        return false;
                    }
                });
            }
        }


    }

    @Override
    public int getItemCount() {
        return list.size() + 1 ;
    }

    @Override
    public int getItemViewType(int position) {
        //当position是最后一个的时候,也就是比list的数量多一个的时候,则表示FooterView
        if (position + 1 == list.size() + 1) {
            return FOOT_VIEW;
        }
        return super.getItemViewType(position);
    }

    public class MyViewHolder extends RecyclerView.ViewHolder {

        private ImageView imageView = null;
        private TextView title = null;
        private TextView teacher = null;
        private TextView classNum = null;


        public MyViewHolder(View itemView,int viewType) {
            super(itemView);
            if (viewType != FOOT_VIEW){
                imageView = itemView.findViewById(R.id.pacage_list_img);
                title = itemView.findViewById(R.id.pacage_list_title);
                teacher = itemView.findViewById(R.id.pacage_list_teacher);
                classNum = itemView.findViewById(R.id.pacage_list_class_num);
            }
        }
    }


    //定义接口  条目点击事件  跟  长按条目点击事件
    public interface OnClickListenerr{
        void onItemClickListener(View view, int possition);
        void onLongItemClickListener(View view, int possition);
    }

    private OnClickListenerr mOnClickListener;

    public void setOnItemClinckListener(OnClickListenerr onClickListener){
        this.mOnClickListener = onClickListener;
    }
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值