|
@@ -26,6 +26,8 @@ class LibraryAdapter(private val controller: LibraryController) : RecyclerViewPa
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private var boundViews = arrayListOf<View>()
|
|
|
+
|
|
|
/**
|
|
|
* 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()
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
}
|