RecyclerView 打造简单的万能适配器Adapter

本文介绍了如何在Android中创建一个简单的RecyclerView万能适配器。内容包括定义BaseViewHolder基类,实现条目点击和子条目点击接口,以及展示如何在AppInfoAdapter中使用这个通用适配器。
摘要由CSDN通过智能技术生成

此处万能适配器只是简单的实现了数据的填充和点击,其他功能待后续扩展

1.首先定义一个父类的  BaseViewHolder 继承 RecyclerView.ViewHolder

package com.lhw.common.adapter;

import android.content.Context;
import android.graphics.drawable.Drawable;
import android.util.SparseArray;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

/**
 * @author LHW
 * @date 2020/11/4.
 * Description:
 */
public class BaseViewHolder extends RecyclerView.ViewHolder {
    //存放界面View
    private SparseArray<View> mViews;
    private Context mContext;
    private View mContentView;
    public BaseViewHolder(Context context,@NonNull View itemView) {
        super(itemView);
        mViews=new SparseArray<>();
        mContext=context;
        mContentView=itemView;
    }

    /**
     * 通过id查找对应的 View
     * @param viewId
     * @param <V>
     * @return
     */
    public  <V extends  View> V getView(int viewId){
        View view = mViews.get(viewId);
        if (null==view){
             view = itemView.findViewById(viewId);
             mViews.put(viewId,view);
        }
        return (V) view;
    }

    /**
     * 创建ViewHolder
     * @param context
     * @param parent
     * @param viewType
     * @param layoutId
     * @return
     */
    public static BaseViewHolder createViewHolder(Context context,ViewGroup parent, int viewType,int layoutId){
        View inflate = LayoutInflater.from(context).inflate(layoutId, parent, false);
        return new BaseViewHolder(context,inflate);
    }

    public View getContentView(){
        return mContentView;
    }

    public BaseViewHolder setText(int viewId, String text){
        TextView tv = getView(viewId);
        tv.setText(text);
        return this;
    }

    public BaseViewHolder setImageView(int viewId, int resId){
        ImageView imageView = getView(viewId);
        imageView.setImageResource(resId);
        return this;
    }
    public BaseViewHolder setImageView(int viewId, Drawable resId){
        ImageView imageView = getView(viewId);
        imageView.setImageDrawable(resId);
        return this;
    }
}

2.创建条目点击事件和子条目点击事件接口

/**
 * @author LHW
 * @date 2020/11/5.
 * Description:
 */
public interface OnItemLongClickListener {

    boolean onItemLongClick(@NonNull CommomBaseAdapter adapter, @NonNull View view, int position);
}


/**
 * @author LHW
 * @date 2020/11/5.
 * Description:
 */
public interface OnItemClickListener {

    void onItemClickListener(@NonNull CommomBaseAdapter<?, ?> adapter, @NonNull View view, int position);
}


/**
 * @author LHW
 * @date 2020/11/5.
 * Description:
 */
public interface OnItemChildLongClickListener 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值