RefreshObserver.kt 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. /*
  2. * Copyright (C) 2018, Umbrella CompanyLimited All rights reserved.
  3. * Project:Net
  4. * Author:Drake
  5. * Date:9/16/19 12:54 AM
  6. */
  7. package com.drake.net.observer
  8. import android.view.View
  9. import android.view.View.OnAttachStateChangeListener
  10. import com.drake.net.NetConfig
  11. import com.scwang.smart.refresh.layout.SmartRefreshLayout
  12. /**
  13. * 自动结束下拉刷新
  14. */
  15. abstract class RefreshObserver<M>(
  16. val refresh: SmartRefreshLayout,
  17. val loadMore: Boolean = false
  18. ) : TryObserver<RefreshObserver<M>, M>() {
  19. init {
  20. refresh.setEnableLoadMore(loadMore)
  21. refresh.addOnAttachStateChangeListener(object : OnAttachStateChangeListener {
  22. override fun onViewAttachedToWindow(v: View) {
  23. }
  24. override fun onViewDetachedFromWindow(v: View) {
  25. dispose()
  26. }
  27. })
  28. }
  29. override fun onFailed(e: Throwable) {
  30. super.onFailed(e)
  31. refresh.finishRefresh(false)
  32. }
  33. override fun handleError(e: Throwable) {
  34. NetConfig.onError(e)
  35. }
  36. override fun onFinish() {
  37. refresh.finishRefresh(true)
  38. }
  39. }