Merge pull request #3 from egeniq-forks/f/crash_fix

Fix on items not being removed and crash on scroll
This commit is contained in:
Little Mango
2018-09-03 19:33:05 +08:00
committed by GitHub

View File

@@ -264,32 +264,36 @@ class StackLayoutManager(scrollOrientation: ScrollOrientation,
} }
override fun canScrollHorizontally(): Boolean { override fun canScrollHorizontally(): Boolean {
return when(mScrollOrientation) { if (itemCount == 0) {
return false
}
return when (mScrollOrientation) {
ScrollOrientation.LEFT_TO_RIGHT, ScrollOrientation.RIGHT_TO_LEFT -> true ScrollOrientation.LEFT_TO_RIGHT, ScrollOrientation.RIGHT_TO_LEFT -> true
else -> false else -> false
} }
} }
override fun canScrollVertically(): Boolean { override fun canScrollVertically(): Boolean {
return when(mScrollOrientation) { if (itemCount == 0) {
return false
}
return when (mScrollOrientation) {
ScrollOrientation.TOP_TO_BOTTOM, ScrollOrientation.BOTTOM_TO_TOP -> true ScrollOrientation.TOP_TO_BOTTOM, ScrollOrientation.BOTTOM_TO_TOP -> true
else -> false else -> false
} }
} }
override fun onLayoutChildren(recycler: RecyclerView.Recycler, state: RecyclerView.State) { override fun onLayoutChildren(recycler: RecyclerView.Recycler, state: RecyclerView.State) {
if (itemCount == 0) {
return
}
mLayout?.requestLayout() mLayout?.requestLayout()
removeAndRecycleAllViews(recycler) removeAndRecycleAllViews(recycler)
if (itemCount > 0) {
mScrollOffset = getValidOffset(mScrollOffset) mScrollOffset = getValidOffset(mScrollOffset)
loadItemView(recycler) loadItemView(recycler)
} }
}
override fun scrollHorizontallyBy(dx: Int, recycler: RecyclerView.Recycler, state: RecyclerView.State): Int { override fun scrollHorizontallyBy(dx: Int, recycler: RecyclerView.Recycler, state: RecyclerView.State): Int {
return handleScrollBy(dx, recycler) return handleScrollBy(dx, recycler)