Linjiajia
2023-03-20 25b98735c5c0cbe40a07ae91a9fb2b204d9166b7
app_base/src/main/java/com/android/app_base/base/adapter/BaseRVAdapter.java
@@ -23,31 +23,31 @@
 * @date 2023.03.02. 17:09
 * @desc
 */
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);
    }
    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);
    @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);
@@ -216,9 +217,9 @@
        }
    }
    /**
     * 从头部 追加一些数据 by hyz
     * 从头部 追加一些数据
     */
    public void addDataFormHead(List<T> data) {
    public void addDataFromHead(List<T> data) {
        if (data == null || data.size() == 0) {
            return;
        }