From edd1368523105285bc15d3e75ca419fb44de0ca4 Mon Sep 17 00:00:00 2001 From: limuyang Date: Mon, 18 Jul 2022 23:22:37 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=95=B4=E7=90=86=20EmptyView=20?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../library/adapter/base/BaseQuickAdapter.kt | 20 ++++++++++++------- .../adapter/base/viewholder/EmptyLayoutVH.kt | 4 +++- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/library/src/main/java/com/chad/library/adapter/base/BaseQuickAdapter.kt b/library/src/main/java/com/chad/library/adapter/base/BaseQuickAdapter.kt index 02e7b3d5c..7b6531c87 100644 --- a/library/src/main/java/com/chad/library/adapter/base/BaseQuickAdapter.kt +++ b/library/src/main/java/com/chad/library/adapter/base/BaseQuickAdapter.kt @@ -31,7 +31,7 @@ abstract class BaseQuickAdapter( /***************************** Public property settings *************************************/ /** 是否使用空布局 */ - var isUseEmpty = true + var isEmptyViewEnable = false /** * 是否打开动画 @@ -63,7 +63,7 @@ abstract class BaseQuickAdapter( } /********************************* Private property *****************************************/ - internal var mLastPosition = -1 + private var mLastPosition = -1 private var mOnItemClickListener: OnItemClickListener? = null private var mOnItemLongClickListener: OnItemLongClickListener? = null @@ -199,7 +199,7 @@ abstract class BaseQuickAdapter( final override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { if (holder is EmptyLayoutVH) { - holder.changeEmptyView(emptyView!!) + holder.changeEmptyView(emptyView) return } @@ -215,7 +215,7 @@ abstract class BaseQuickAdapter( } if (holder is EmptyLayoutVH) { - holder.changeEmptyView(emptyView!!) + holder.changeEmptyView(emptyView) return } @@ -431,7 +431,7 @@ abstract class BaseQuickAdapter( set(value) { val oldDisplayEmptyLayout = displayEmptyView() field = value - isUseEmpty = true + isEmptyViewEnable = true val newDisplayEmptyLayout = displayEmptyView() @@ -440,7 +440,7 @@ abstract class BaseQuickAdapter( } else if (newDisplayEmptyLayout && !oldDisplayEmptyLayout) { notifyItemInserted(0) } else if (oldDisplayEmptyLayout && newDisplayEmptyLayout) { - notifyItemChanged(0, "") + notifyItemChanged(0, 1) } } @@ -464,7 +464,7 @@ abstract class BaseQuickAdapter( if (emptyView == null) { return false } - if (!isUseEmpty) { + if (!isEmptyViewEnable) { return false } return items.isEmpty() @@ -537,6 +537,7 @@ abstract class BaseQuickAdapter( return } + this.items = list ?: emptyList() mLastPosition = -1 notifyDataSetChanged() @@ -627,6 +628,11 @@ abstract class BaseQuickAdapter( notifyItemRemoved(position) } + // 处理空视图的情况 + if (displayEmptyView()) { + notifyItemInserted(0) + } + // compatibilityDataSizeChanged(0) // notifyItemRangeChanged(position, this.data.size - position) } diff --git a/library/src/main/java/com/chad/library/adapter/base/viewholder/EmptyLayoutVH.kt b/library/src/main/java/com/chad/library/adapter/base/viewholder/EmptyLayoutVH.kt index 3fbb1cace..aefeac2a3 100644 --- a/library/src/main/java/com/chad/library/adapter/base/viewholder/EmptyLayoutVH.kt +++ b/library/src/main/java/com/chad/library/adapter/base/viewholder/EmptyLayoutVH.kt @@ -7,7 +7,9 @@ import android.widget.FrameLayout import androidx.recyclerview.widget.RecyclerView internal class EmptyLayoutVH(private val emptyLayout:FrameLayout ): RecyclerView.ViewHolder(emptyLayout) { - fun changeEmptyView(view: View) { + fun changeEmptyView(view: View?) { + if (view == null) return + val emptyLayoutVp: ViewParent? = view.parent if (emptyLayoutVp is ViewGroup) { emptyLayoutVp.removeView(view)