此处万能适配器只是简单的实现了数据的填充和点击,其他功能待后续扩展
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