Twidere-App-Android-Twitter.../twidere/src/main/kotlin/org/mariotaku/twidere/util/RecyclerViewScrollHandler.kt

56 lines
1.7 KiB
Kotlin

package org.mariotaku.twidere.util
import android.support.v7.widget.RecyclerView
import android.view.View
import org.mariotaku.twidere.util.ContentScrollHandler.ContentListSupport
import org.mariotaku.twidere.util.ContentScrollHandler.ViewCallback
/**
* Created by mariotaku on 16/3/1.
*/
class RecyclerViewScrollHandler(contentListSupport: ContentListSupport, viewCallback: ViewCallback?) : RecyclerView.OnScrollListener() {
internal val scrollHandler: ContentScrollHandler
private var oldState = RecyclerView.SCROLL_STATE_IDLE
init {
scrollHandler = ContentScrollHandler(contentListSupport, viewCallback)
}
var touchSlop: Int
get() = scrollHandler.touchSlop
set(value) {
scrollHandler.touchSlop = value
}
var reversed: Boolean
get() = scrollHandler.reversed
set(value) {
scrollHandler.reversed = value
}
val touchListener: View.OnTouchListener
get() = scrollHandler.touchListener
override fun onScrollStateChanged(recyclerView: RecyclerView?, newState: Int) {
scrollHandler.handleScrollStateChanged(newState, RecyclerView.SCROLL_STATE_IDLE)
}
override fun onScrolled(recyclerView: RecyclerView?, dx: Int, dy: Int) {
val scrollState = recyclerView!!.scrollState
scrollHandler.handleScroll(dy, scrollState, oldState, RecyclerView.SCROLL_STATE_IDLE)
oldState = scrollState
}
class RecyclerViewCallback(private val recyclerView: RecyclerView) : ViewCallback {
override val computingLayout: Boolean
get() = recyclerView.isComputingLayout
override fun post(runnable: Runnable) {
recyclerView.post(runnable)
}
}
}