diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/source/browse/BrowseSourceAdapter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/source/browse/BrowseSourceAdapter.kt new file mode 100644 index 0000000000..559dd8c8ff --- /dev/null +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/source/browse/BrowseSourceAdapter.kt @@ -0,0 +1,16 @@ +package eu.kanade.tachiyomi.ui.source.browse + +import androidx.recyclerview.widget.RecyclerView +import eu.davidea.flexibleadapter.FlexibleAdapter +import eu.davidea.flexibleadapter.items.IFlexible + +class BrowseSourceAdapter : FlexibleAdapter>(null, null) { + override fun clear() { + allBoundViewHolders.forEach { holder -> + val item = getItem(holder.flexibleAdapterPosition) as? BrowseSourceItem ?: return@forEach + item.recycle() + } + + super.clear() + } +} diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/source/browse/BrowseSourceController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/source/browse/BrowseSourceController.kt index f113d9242b..d655bba3da 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/source/browse/BrowseSourceController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/source/browse/BrowseSourceController.kt @@ -165,7 +165,7 @@ open class BrowseSourceController(bundle: Bundle) : super.onViewCreated(view) // Initialize adapter, scroll listener and recycler views - adapter = FlexibleAdapter(null, this) + adapter = BrowseSourceAdapter() setupRecycler(view) binding.fab.isVisible = presenter.sourceFilters.isNotEmpty() diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/source/browse/BrowseSourceItem.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/source/browse/BrowseSourceItem.kt index 92fdcf1713..ea6389951c 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/source/browse/BrowseSourceItem.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/source/browse/BrowseSourceItem.kt @@ -104,6 +104,10 @@ class BrowseSourceItem( holder: BrowseSourceHolder?, position: Int ) { + recycle() + } + + fun recycle() { job?.cancel() job = null }