mirror of
https://github.com/null2264/yokai.git
synced 2025-06-20 18:24:42 +00:00
fix(browse): Recycle on adapter clear
This commit is contained in:
parent
fcaff92db1
commit
0d205f4a6d
3 changed files with 29 additions and 1 deletions
|
@ -0,0 +1,24 @@
|
|||
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<IFlexible<*>>(null, null) {
|
||||
private fun clearItems() {
|
||||
allBoundViewHolders.forEach { holder ->
|
||||
val item = getItem(holder.flexibleAdapterPosition) as? BrowseSourceItem ?: return@forEach
|
||||
item.recycle()
|
||||
}
|
||||
}
|
||||
|
||||
override fun clear() {
|
||||
clearItems()
|
||||
super.clear()
|
||||
}
|
||||
|
||||
override fun onDetachedFromRecyclerView(recyclerView: RecyclerView) {
|
||||
clearItems()
|
||||
super.onDetachedFromRecyclerView(recyclerView)
|
||||
}
|
||||
}
|
|
@ -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()
|
||||
|
|
|
@ -104,6 +104,10 @@ class BrowseSourceItem(
|
|||
holder: BrowseSourceHolder?,
|
||||
position: Int
|
||||
) {
|
||||
recycle()
|
||||
}
|
||||
|
||||
fun recycle() {
|
||||
job?.cancel()
|
||||
job = null
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue