Linjiajia
2023-04-24 fcdddf8b9b34f9930bec454b5fffe41c0e33ba3c
app_base/src/main/java/com/android/app_base/base/adapter/BaseRVAdapter.java
@@ -21,33 +21,33 @@
/**
 * @author Ljj
 * @date 2023.03.02. 17:09
 * @desc
 * @desc RecyclerView 适配器基类
 */
public abstract class BaseRVAdapter<T,VDB extends ViewDataBinding> extends RecyclerView.Adapter<BaseRVAdapter.BaseViewHolder<VDB>> {
public abstract class BaseRVAdapter<T,VDB extends ViewDataBinding,VH extends BaseRVAdapter.BaseViewHolder<VDB>> extends RecyclerView.Adapter<VH> {
    /** 上下文对象 */
    private final Context mContext;
    protected final Context mContext;
    /** RecyclerView 对象 */
    private RecyclerView mRecyclerView;
    protected RecyclerView mRecyclerView;
    /** 条目点击监听器 */
    private OnItemClickListener mItemClickListener;
    protected OnItemClickListener mItemClickListener;
    /** 条目长按监听器 */
    private OnItemLongClickListener mItemLongClickListener;
    protected OnItemLongClickListener mItemLongClickListener;
    /**
     * 该 adapter 上绑定的滑动监听器
     */
    private MyOnScrollListener myOnScrollListener;
    protected MyOnScrollListener myOnScrollListener;
    /** 条目子 View 点击监听器 */
    private SparseArray<OnChildClickListener> mChildClickListeners;
    protected SparseArray<OnChildClickListener> mChildClickListeners;
    /** 条目子 View 长按监听器 */
    private SparseArray<OnChildLongClickListener> mChildLongClickListeners;
    protected SparseArray<OnChildLongClickListener> mChildLongClickListeners;
    /**
     * 列表数据
     */
    private List<T> mDataList;
    protected List<T> mDataList;
    public BaseRVAdapter(Context context) {
        mContext = context;
@@ -65,16 +65,17 @@
    @NonNull
    @Override
    public BaseViewHolder<VDB> onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    public VH onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        VDB itemBind = DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()),getLayoutId(),parent,false);
        return new BaseViewHolder<>(itemBind);
        return getViewHolder(itemBind,viewType);
    }
    protected abstract int getLayoutId();
    protected abstract void onBind(BaseViewHolder<VDB> holder, int position);
    protected abstract void onBind(VH holder, int position);
    protected abstract VH getViewHolder(VDB itemBind,int viewType);
    @Override
    public void onBindViewHolder(@NonNull BaseViewHolder<VDB> holder, int position) {
    public void onBindViewHolder(@NonNull VH holder, int position) {
        View itemView = holder.itemView;
        // 设置条目的点击和长按事件
        if (mItemClickListener != null) {
@@ -172,7 +173,7 @@
     * @param <VDB>
     */
    public static class BaseViewHolder<VDB extends ViewDataBinding> extends RecyclerView.ViewHolder{
        private VDB binding;
        protected VDB binding;
        public BaseViewHolder(@NonNull View itemView) {
            super(itemView);
@@ -211,14 +212,16 @@
        if (mDataList == null || mDataList.size() == 0) {
            setData(data);
        } else {
            mDataList.addAll(data);
            notifyDataSetChanged();
            //一个一个的添加
            for (T datum : data) {
                addItem(datum);
            }
        }
    }
    /**
     * 从头部 追加一些数据 by hyz
     * 从头部 追加一些数据
     */
    public void addDataFormHead(List<T> data) {
    public void addDataFromHead(List<T> data) {
        if (data == null || data.size() == 0) {
            return;
        }