From 1df231fd6aafa221aef3532d069c7e27d4331be7 Mon Sep 17 00:00:00 2001 From: Linjiajia <319408893@qq.com> Date: 星期日, 27 八月 2023 19:21:01 +0800 Subject: [PATCH] 功能全部完成 --- app_base/src/main/java/com/android/app_base/base/adapter/BaseRVAdapter.java | 43 ++++++++++++++++++++++++------------------- 1 files changed, 24 insertions(+), 19 deletions(-) diff --git a/app_base/src/main/java/com/android/app_base/base/adapter/BaseRVAdapter.java b/app_base/src/main/java/com/android/app_base/base/adapter/BaseRVAdapter.java index da0d572..2b2f62d 100644 --- a/app_base/src/main/java/com/android/app_base/base/adapter/BaseRVAdapter.java +++ b/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; } @@ -280,6 +283,7 @@ position = mDataList.size() - 1; } notifyItemInserted(position); + notifyItemRangeChanged(position, mDataList.size() - position); } /** * 鍒犻櫎鍗曟潯鏁版嵁 @@ -295,6 +299,7 @@ mDataList.remove(position); // 鍛婅瘔閫傞厤鍣ㄥ垹闄ゆ暟鎹殑浣嶇疆锛屼細鏈夊姩鐢绘晥鏋� notifyItemRemoved(position); + notifyItemRangeChanged(position, mDataList.size() - position); } /** * 璁剧疆 RecyclerView 鏉$洰鐐瑰嚮鐩戝惉 -- Gitblit v1.9.1