RecycleView添加头布局尾布局

所有得逻辑操作都在adapter中

package com.example.myapplication;

import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import java.util.ArrayList;

/**
 * Created by pw on 2019/2/26 19:35
 * E-Mail Address: pw163.com
 */
public class RecycleViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
    private final ArrayList<Datas> datas;
    private final MainActivity context;
    private final LayoutInflater minflater;
    private final static int ITEM_HEADER=0;
    private final static int ITEM_CONTENT=1;
    private final static int ITEM_FOOT=2;
    /**
     * 头布局和尾布局的数量
     */
    private int mHeader=1;
    private int mFoot=1;
    
    public RecycleViewAdapter(ArrayList<Datas> arrayList, MainActivity mainActivity) {
        this.datas = arrayList;
        this.context = mainActivity;
        minflater = LayoutInflater.from(context);
    }

    @NonNull
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int viewType) {

        if (viewType == ITEM_CONTENT){
            View contentView = minflater.inflate(R.layout.item_recycle, viewGroup, false);
            return new ViewHolder(contentView);
        }
        if (viewType == ITEM_HEADER){
            View headerView = minflater.inflate(R.layout.item_head, viewGroup, false);
            return new HeaderViewHdlder(headerView);
        }
        if (viewType == ITEM_FOOT){
            View footView = minflater.inflate(R.layout.item_foot, viewGroup, false);
            return new FootViewHolder(footView);
        }

        return null;

    }

    @Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int postion) {
        if (viewHolder instanceof ViewHolder){
            ((ViewHolder)viewHolder).tv_name.setText(datas.get(postion-mHeader).getName());
            ((ViewHolder)viewHolder).tv_age.setText(datas.get(postion-mHeader).getAge()+"");
        }
        if (viewHolder instanceof FootViewHolder){
            ((FootViewHolder)viewHolder).tv_foot.setText("说啥呢啊");
            ((FootViewHolder)viewHolder).tv_foots.setText("哈哈哈");
        }
    }

    @Override
    public int getItemCount() {
        return datas.size()+mHeader+mFoot;
    }

    @Override
    public int getItemViewType(int position) {
        if (mHeader != 0 && position<mHeader){
            return ITEM_HEADER;
        }
        if (mFoot != 0 && position>=datas.size()+mHeader){
            return ITEM_FOOT;
        }
        return ITEM_CONTENT;
    }

    class ViewHolder extends RecyclerView.ViewHolder{
        TextView tv_name;
        TextView tv_age;
        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            tv_name = itemView.findViewById(R.id.tv_names);
            tv_age = itemView.findViewById(R.id.tv_ages);
        }
    }

    class HeaderViewHdlder extends RecyclerView.ViewHolder{
        public HeaderViewHdlder(@NonNull View itemView) {
            super(itemView);
        }
    }

    class FootViewHolder extends RecyclerView.ViewHolder{
        private final TextView tv_foot;
        private final TextView tv_foots;
        public FootViewHolder(@NonNull View itemView) {
            super(itemView);
            tv_foot = itemView.findViewById(R.id.tv_foot);
            tv_foots = itemView.findViewById(R.id.tv_foots);
        }
    }
}

猜你喜欢

转载自blog.csdn.net/mintent/article/details/87967386
今日推荐