From b3fc4422bede7e51ce0b59d39345d54365890077 Mon Sep 17 00:00:00 2001 From: limuyang Date: Thu, 7 Dec 2023 17:55:57 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=8D=95=E7=8B=AC=E8=B0=83=E7=94=A8=20n?= =?UTF-8?q?otifyDataSetChanged()=20=E6=96=B9=E6=B3=95=E5=AF=B9=20stateView?= =?UTF-8?q?=20=E7=94=9F=E6=95=88=E7=9A=84=20bug=20#3822?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/chad/library/adapter4/BaseQuickAdapter.kt | 3 ++- .../chad/library/adapter4/viewholder/StateLayoutVH.kt | 10 +++++++++- library/src/main/res/values/ids.xml | 2 ++ 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/library/src/main/java/com/chad/library/adapter4/BaseQuickAdapter.kt b/library/src/main/java/com/chad/library/adapter4/BaseQuickAdapter.kt index 4a2456bb1..8a04b6bb8 100644 --- a/library/src/main/java/com/chad/library/adapter4/BaseQuickAdapter.kt +++ b/library/src/main/java/com/chad/library/adapter4/BaseQuickAdapter.kt @@ -242,6 +242,7 @@ abstract class BaseQuickAdapter( final override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { if (holder is StateLayoutVH) { + holder.changeStateView(stateView) return } @@ -822,7 +823,7 @@ abstract class BaseQuickAdapter( companion object { - const val EMPTY_VIEW = 0x01000555 + val EMPTY_VIEW = R.id.BaseQuickAdapter_empty_view internal const val EMPTY_PAYLOAD = 0 } diff --git a/library/src/main/java/com/chad/library/adapter4/viewholder/StateLayoutVH.kt b/library/src/main/java/com/chad/library/adapter4/viewholder/StateLayoutVH.kt index 4c39cf920..baa66f314 100644 --- a/library/src/main/java/com/chad/library/adapter4/viewholder/StateLayoutVH.kt +++ b/library/src/main/java/com/chad/library/adapter4/viewholder/StateLayoutVH.kt @@ -14,7 +14,7 @@ import com.chad.library.adapter4.fullspan.FullSpanAdapterType * @property stateLayout * @constructor Create empty Empty layout v h */ -internal class StateLayoutVH constructor( +internal class StateLayoutVH( parent: ViewGroup, stateView: View?, private val stateLayout: FrameLayout = FrameLayout(parent.context).apply { @@ -37,6 +37,14 @@ internal class StateLayoutVH constructor( return } + if (rootView.childCount == 1) { + val old = rootView.getChildAt(0) + if (old == stateView) { + // 如果是同一个view,不进行操作 + return + } + } + stateView.parent.run { if (this is ViewGroup) { this.removeView(stateView) diff --git a/library/src/main/res/values/ids.xml b/library/src/main/res/values/ids.xml index b273000ab..6de5128cc 100644 --- a/library/src/main/res/values/ids.xml +++ b/library/src/main/res/values/ids.xml @@ -6,4 +6,6 @@ + + \ No newline at end of file