Ver Fonte

+ DialogObserver设置默认加载对话框
* page() 去除冗余参数 adapter

drake há 5 anos atrás
pai
commit
cf8dcacfab

+ 1 - 1
README.md

@@ -54,7 +54,7 @@ allprojects {
 module of build.gradle
 
 ```groovy
-implementation 'com.github.liangjingkanji:Net:1.0'
+implementation 'com.github.liangjingkanji:Net:1.1.1'
 ```
 
 

+ 27 - 9
net/src/main/java/com/drake/net/observer/DialogObserver.kt

@@ -24,32 +24,50 @@ import io.reactivex.observers.DefaultObserver
  * 开始: 显示对话框
  * 错误: 提示错误信息, 关闭对话框
  * 完全: 关闭对话框
+ *
+ * @param activity 对话框跟随生命周期的FragmentActivity
+ * @param dialog 单例对话框
+ * @param cancelable 是否允许用户取消对话框
  */
 abstract class DialogObserver<M>(
     var activity: FragmentActivity,
-    var dialog: Dialog = ProgressDialog(activity),
+    var dialog: Dialog? = null,
     var cancelable: Boolean = true
 ) : DefaultObserver<M>(), LifecycleObserver {
 
+    companion object {
+
+        private var defaultDialog: (DialogObserver<*>.(context: FragmentActivity) -> Dialog)? = null
+
+        fun setDefaultDialog(block: (DialogObserver<*>.(context: FragmentActivity) -> Dialog)) {
+            defaultDialog = block
+        }
+    }
+
 
     override fun onStart() {
 
         activity.lifecycle.addObserver(this)
 
-
-        if (dialog is ProgressDialog) {
-            (dialog as ProgressDialog).setMessage("加载中")
+        dialog = when {
+            dialog != null -> dialog
+            defaultDialog != null -> defaultDialog?.invoke(this, activity)
+            else -> {
+                val progress = ProgressDialog(activity)
+                progress.setMessage("加载中")
+                progress
+            }
         }
 
-        dialog.setOnDismissListener { cancel() }
-        dialog.setCancelable(cancelable)
-        dialog.show()
+        dialog?.setOnDismissListener { cancel() }
+        dialog?.setCancelable(cancelable)
+        dialog?.show()
     }
 
     @OnLifecycleEvent(Event.ON_DESTROY)
     fun dismissDialog() {
-        if (dialog.isShowing) {
-            dialog.dismiss()
+        if (dialog != null && dialog!!.isShowing) {
+            dialog!!.dismiss()
         }
     }
 

+ 2 - 17
net/src/main/java/com/drake/net/observer/ObserverUtils.kt

@@ -8,12 +8,10 @@
 package com.drake.net.observer
 
 import android.app.Dialog
-import android.app.ProgressDialog
 import android.view.View
 import androidx.fragment.app.Fragment
 import androidx.fragment.app.FragmentActivity
 import androidx.lifecycle.LifecycleOwner
-import com.drake.brv.BindingAdapter
 import com.drake.brv.PageRefreshLayout
 import com.drake.statelayout.StateLayout
 import io.reactivex.Observable
@@ -84,19 +82,7 @@ fun <M> Observable<M>.state(fragment: Fragment, block: StateObserver<M>.(M) -> U
  */
 fun <M> Observable<M>.dialog(
     activity: FragmentActivity,
-    cancelable: Boolean = true,
-    block: (DialogObserver<M>.(M) -> Unit)? = null
-) {
-    subscribe(object : DialogObserver<M>(activity, cancelable = cancelable) {
-        override fun onNext(t: M) {
-            block?.invoke(this, t)
-        }
-    })
-}
-
-fun <M> Observable<M>.dialog(
-    activity: FragmentActivity,
-    dialog: Dialog = ProgressDialog(activity),
+    dialog: Dialog? = null,
     cancelable: Boolean = true,
     block: (DialogObserver<M>.(M) -> Unit)? = null
 ) {
@@ -133,10 +119,9 @@ fun <M> Observable<M>.refresh(
  */
 fun <M> Observable<M>.page(
     pageRefreshLayout: PageRefreshLayout,
-    adapter: BindingAdapter? = null,
     block: PageObserver<M>.(M) -> Unit
 ) {
-    subscribe(object : PageObserver<M>(pageRefreshLayout, adapter) {
+    subscribe(object : PageObserver<M>(pageRefreshLayout) {
         override fun onNext(t: M) {
             block(t)
         }

+ 1 - 7
net/src/main/java/com/drake/net/observer/PageObserver.kt

@@ -9,21 +9,15 @@ package com.drake.net.observer
 
 import android.view.View
 import android.view.View.OnAttachStateChangeListener
-import com.drake.brv.BindingAdapter
 import com.drake.brv.PageRefreshLayout
 import io.reactivex.observers.DefaultObserver
 
 /**
  * 自动结束下拉刷新和上拉加载状态
  */
-abstract class PageObserver<M>(
-    val pageRefreshLayout: PageRefreshLayout,
-    val adapter: BindingAdapter? = null
-) :
-    DefaultObserver<M>() {
+abstract class PageObserver<M>(val pageRefreshLayout: PageRefreshLayout) : DefaultObserver<M>() {
 
     init {
-
         pageRefreshLayout.addOnAttachStateChangeListener(object : OnAttachStateChangeListener {
             override fun onViewAttachedToWindow(v: View) {
 

+ 7 - 0
sample/src/main/java/com/drake/net/sample/App.kt

@@ -9,5 +9,12 @@ class App : Application() {
         super.onCreate()
 
         setDefaultNetConfig("http://192.168.1.1")
+
+
+/*        // 设置默认的对话框
+        DialogObserver.setDefaultDialog {
+            val progressDialog = ProgressDialog(it)
+            progressDialog
+        }*/
     }
 }

+ 0 - 1
sample/src/main/java/com/drake/net/sample/MainActivity.kt

@@ -9,6 +9,5 @@ class MainActivity : AppCompatActivity() {
         super.onCreate(savedInstanceState)
         setContentView(R.layout.activity_main)
 
-
     }
 }