Use WeakHashMap to store views
This commit is contained in:
@@ -8,17 +8,18 @@ import androidx.core.view.forEach
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import org.koitharu.kotatsu.core.util.ext.findCenterViewPosition
|
||||
import java.util.LinkedList
|
||||
import java.util.WeakHashMap
|
||||
|
||||
class WebtoonRecyclerView @JvmOverloads constructor(
|
||||
context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
|
||||
) : RecyclerView(context, attrs, defStyleAttr) {
|
||||
|
||||
private var onPageScrollListeners: MutableList<OnPageScrollListener>? = null
|
||||
private val detachedViews = ArrayList<View>()
|
||||
private val detachedViews = WeakHashMap<View, Unit>()
|
||||
|
||||
override fun onChildDetachedFromWindow(child: View) {
|
||||
super.onChildDetachedFromWindow(child)
|
||||
detachedViews.add(child)
|
||||
detachedViews[child] = Unit
|
||||
}
|
||||
|
||||
override fun onChildAttachedToWindow(child: View) {
|
||||
@@ -115,7 +116,7 @@ class WebtoonRecyclerView @JvmOverloads constructor(
|
||||
forEach { child ->
|
||||
(child as WebtoonFrameLayout).target.requestLayout()
|
||||
}
|
||||
detachedViews.forEach {child ->
|
||||
detachedViews.keys.forEach { child ->
|
||||
(child as WebtoonFrameLayout).target.requestLayout()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user