diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryAdapter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryAdapter.kt index 247b113ba0..1557a0edd2 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryAdapter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryAdapter.kt @@ -26,6 +26,8 @@ class LibraryAdapter(private val controller: LibraryController) : RecyclerViewPa } } + private var boundViews = arrayListOf() + /** * Creates a new view for this adapter. * @@ -45,6 +47,7 @@ class LibraryAdapter(private val controller: LibraryController) : RecyclerViewPa */ override fun bindView(view: View, position: Int) { (view as LibraryCategoryView).onBind(categories[position]) + boundViews.add(view) } /** @@ -55,6 +58,7 @@ class LibraryAdapter(private val controller: LibraryController) : RecyclerViewPa */ override fun recycleView(view: View, position: Int) { (view as LibraryCategoryView).onRecycle() + boundViews.remove(view) } /** @@ -85,4 +89,15 @@ class LibraryAdapter(private val controller: LibraryController) : RecyclerViewPa return if (index == -1) POSITION_NONE else index } + /** + * Called when the view of this adapter is being destroyed. + */ + fun onDestroy() { + for (view in boundViews) { + if (view is LibraryCategoryView) { + view.unsubscribe() + } + } + } + } \ No newline at end of file diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryCategoryView.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryCategoryView.kt index dc1419b084..f2969dbce2 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryCategoryView.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryCategoryView.kt @@ -124,12 +124,11 @@ class LibraryCategoryView @JvmOverloads constructor(context: Context, attrs: Att fun onRecycle() { adapter.setItems(emptyList()) adapter.clearSelection() - subscriptions.clear() + unsubscribe() } - override fun onDetachedFromWindow() { + fun unsubscribe() { subscriptions.clear() - super.onDetachedFromWindow() } /** diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt index 2b65b0d235..b699069b7c 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt @@ -164,6 +164,7 @@ class LibraryController( } override fun onDestroyView(view: View) { + adapter?.onDestroy() adapter = null actionMode = null tabsVisibilitySubscription?.unsubscribe()