From e36918cb3a3165d047fd8823020662cb564d3085 Mon Sep 17 00:00:00 2001 From: mdrlzy Date: Sun, 13 Aug 2023 06:55:52 +0600 Subject: [PATCH] !!! fix inconsistency detected: modify adapter list in main thread --- .../screen/resources/ResourcesFragment.kt | 4 +--- .../adapter/ResourcesGridPresenter.kt | 20 +++++++------------ 2 files changed, 8 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/dev/arkbuilders/navigator/presentation/screen/resources/ResourcesFragment.kt b/app/src/main/java/dev/arkbuilders/navigator/presentation/screen/resources/ResourcesFragment.kt index fc0c9d1a..76f026b0 100644 --- a/app/src/main/java/dev/arkbuilders/navigator/presentation/screen/resources/ResourcesFragment.kt +++ b/app/src/main/java/dev/arkbuilders/navigator/presentation/screen/resources/ResourcesFragment.kt @@ -163,8 +163,7 @@ class ResourcesFragment : with(binding) { resourcesAdapter = ResourcesRVAdapter(presenter.gridPresenter) rvResources.adapter = resourcesAdapter - rvResources.setItemViewCacheSize(0) - rvResources.layoutManager = GridLayoutManager(context, 3) + rvResources.layoutManager = GridLayoutManager(requireContext(), 3) } override fun onResume() { @@ -286,7 +285,6 @@ class ResourcesFragment : } override fun onSelectingChanged(enabled: Boolean) { - binding.rvResources.recycledViewPool.clear() resourcesAdapter?.onSelectingChanged(enabled) } diff --git a/app/src/main/java/dev/arkbuilders/navigator/presentation/screen/resources/adapter/ResourcesGridPresenter.kt b/app/src/main/java/dev/arkbuilders/navigator/presentation/screen/resources/adapter/ResourcesGridPresenter.kt index 6509694e..6343f45c 100644 --- a/app/src/main/java/dev/arkbuilders/navigator/presentation/screen/resources/adapter/ResourcesGridPresenter.kt +++ b/app/src/main/java/dev/arkbuilders/navigator/presentation/screen/resources/adapter/ResourcesGridPresenter.kt @@ -3,12 +3,12 @@ package dev.arkbuilders.navigator.presentation.screen.resources.adapter import android.util.Log import dev.arkbuilders.navigator.data.preferences.PreferenceKey import dev.arkbuilders.navigator.data.preferences.Preferences +import dev.arkbuilders.navigator.data.utils.LogTags.RESOURCES_SCREEN +import dev.arkbuilders.navigator.data.utils.Sorting import dev.arkbuilders.navigator.presentation.navigation.AppRouter import dev.arkbuilders.navigator.presentation.navigation.Screens import dev.arkbuilders.navigator.presentation.screen.resources.ResourcesPresenter import dev.arkbuilders.navigator.presentation.screen.resources.ResourcesView -import dev.arkbuilders.navigator.data.utils.LogTags.RESOURCES_SCREEN -import dev.arkbuilders.navigator.data.utils.Sorting import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.launchIn @@ -205,13 +205,11 @@ class ResourcesGridPresenter( suspend fun updateSelection( selection: Set - ) = withContext(Dispatchers.Default) { + ) = withContext(Dispatchers.Main) { this@ResourcesGridPresenter.selection = resources .filter { selection.contains(it.id()) } - withContext(Dispatchers.Main) { - setProgressVisibility(false) - viewState.updateResourcesAdapter() - } + setProgressVisibility(false) + viewState.updateResourcesAdapter() } suspend fun resetResources( @@ -378,14 +376,9 @@ class ResourcesGridPresenter( ) } - private fun sortSelection() { - val selection = this.selection.toSet() - this.selection = resources.filter { selection.contains(it) } - } - private fun sortSelectionAndUpdateAdapter() { - sortSelection() scope.launch(Dispatchers.Main) { + selection = resources.filter { selection.contains(it) } setProgressVisibility(false) viewState.updateResourcesAdapter() } @@ -404,6 +397,7 @@ class ResourcesGridPresenter( Sorting.NAME -> compareBy(String.CASE_INSENSITIVE_ORDER) { it.resource.name } + Sorting.SIZE -> compareBy { it.resource.size() } Sorting.TYPE -> compareBy { it.resource.extension } Sorting.LAST_MODIFIED -> compareBy { it.resource.modified }