RecycleView添加头布局尾布局

本文详细介绍了如何在Android应用中使用RecyclerView自定义Adapter,包括创建ViewHolder、处理不同类型的Item(如头部、内容、底部),以及如何绑定数据到视图。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

所有得逻辑操作都在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);
        }
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值