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