【Android-Activity】RecyclerView自定义viewHolder的实现

本文介绍了如何在Android中使用RecyclerView实现自定义的viewHolder,以根据position展示不同类型的item。主要步骤包括:创建Adapter并设置基本配置,复写getItemViewType方法来返回不同的viewType,以及创建不同的itemView和ViewHolder。通过这种方式,可以根据需要显示多种布局效果。
摘要由CSDN通过智能技术生成

RecyclerView的优势还在于他可以自定义itemView,来实现不同的view,实现效果(根据position的不同来展示不同的itemview!):
在这里插入图片描述
点击事件的实现: link.

下拉刷新的实现: link.

实现思路:根据postiion的不同设置viewtype的值,来返回不同的itemview

——————————————————————————————————————————

实现步骤:

1、创建Adapter,基本设置

特别注意!!! 自定义的viewholder在创建adapter的时候是不需要泛型了!直接继承RecyclerView.Adapter即可!
Adapter的基本格式: 想要外面传什么参数进来,就设置在构造函数中
在这里插入图片描述

对于自定义item的实现我们主要修改onCreateViewHolder方法,因为该方法是用来创建InnerHolder的,所以不同类型的itemView需要在这里根据条件进行设置!这里的条件就是 viewType !可以在该方法中看到这个参数,所以需要去复写getItemViewType方法!即步骤2中的内容

2、复写getItemViewType方法

该方法的作用是返回不同的viewType,常用于自定义的viewHolder中,我们去复写这个方法,以本文demo为例,如果position % 2是0的话,我们就返回参数0;如果position % 2是1的话,我们就返回参数1(viewtype的数据类型是 int )

@Override
public int getItemViewType(int position) {
   
    if (position%2==0){
   
        return 0;
    }else{
   
        return 1;
    }
}
3、创建不同的itemview,viewHolder

为了返回两种itemview,我们创建两个itemview的布局:

在这里插入图片描述

在这里插入图片描述viewHolder 继承 RecyclerView.viewHolder,为了能返回不同的viewholder,我们创建两个viewholder

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

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

此时我们根据viewType的不同值来返回不同的itemview:

@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
   
    if (viewType== 0) {
   
        View view = View.inflate(parent.getContext(), R.layout.item_more_item_view_copy, null);
        return new FirstInnerHolder(view);
    } else if (viewType == 1) {
   
        View view_second = View.inflate(parent.getContext(), R.layout.item_more_item_view, null);
        return new SecondInnerHolder(view_second);
    }
    return null;
}

实现效果:

在这里插入图片描述

源码:
Adapter:

public class MoreItemViewAdapter extends RecyclerView.Adapter {
   
    private static final String TAG = "MoreItemViewAdapter";
    private 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值