diff --git a/library/build.gradle.kts b/library/build.gradle.kts index 08df6ae51..32f375a3e 100644 --- a/library/build.gradle.kts +++ b/library/build.gradle.kts @@ -9,7 +9,7 @@ plugins { signing } -val versionName = "4.0.0-beta13" +val versionName = "4.0.0-beta14" android { diff --git a/library/src/main/java/com/chad/library/adapter/base/loadState/leading/LeadingLoadStateAdapter.kt b/library/src/main/java/com/chad/library/adapter/base/loadState/leading/LeadingLoadStateAdapter.kt index 28025ab5b..df174d634 100644 --- a/library/src/main/java/com/chad/library/adapter/base/loadState/leading/LeadingLoadStateAdapter.kt +++ b/library/src/main/java/com/chad/library/adapter/base/loadState/leading/LeadingLoadStateAdapter.kt @@ -31,6 +31,8 @@ abstract class LeadingLoadStateAdapter : LoadStateA */ var preloadSize = 0 + private var mDelayNextLoadFlag: Boolean = false + override fun displayLoadStateAsItem(loadState: LoadState): Boolean { return loadState is LoadState.Loading } @@ -47,13 +49,17 @@ abstract class LeadingLoadStateAdapter : LoadStateA private fun loadAction() { if (!isLoadEnable || onLeadingListener?.isAllowLoading() == false) return + if (mDelayNextLoadFlag) return + if (loadState is LoadState.NotLoading && !loadState.endOfPaginationReached) { val recyclerView = recyclerView ?: return if (recyclerView.isComputingLayout) { // 如果 RecyclerView 当前正在计算布局,则延迟执行,避免崩溃 // To avoid crash. Delay to load more if the recyclerview is computingLayout. + mDelayNextLoadFlag = true recyclerView.post { + mDelayNextLoadFlag = false invokeLoad() } return