1
0
drake 3 жил өмнө
parent
commit
4700c5e513

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

@@ -22,6 +22,7 @@ import com.drake.brv.BindingAdapter
 import com.drake.net.NetConfig
 import com.drake.net.interceptor.LogRecordInterceptor
 import com.drake.net.interceptor.RequestInterceptor
+import com.drake.net.okhttp.setConverter
 import com.drake.net.okhttp.setDialogFactory
 import com.drake.net.okhttp.setLog
 import com.drake.net.okhttp.setRequestInterceptor
@@ -29,6 +30,7 @@ import com.drake.net.request.BaseRequest
 import com.drake.net.sample.BR
 import com.drake.net.sample.BuildConfig
 import com.drake.net.sample.R
+import com.drake.net.sample.converter.GsonConverter
 import com.drake.statelayout.StateConfig
 import com.scwang.smart.refresh.footer.ClassicsFooter
 import com.scwang.smart.refresh.header.MaterialHeader
@@ -56,6 +58,8 @@ class App : Application() {
                 }
             })
 
+            setConverter(GsonConverter()) // 数据转换器
+
             setDialogFactory { // 全局加载对话框
                 ProgressDialog(it).apply {
                     setMessage("我是全局自定义的加载对话框...")

+ 14 - 11
sample/src/main/java/com/drake/net/sample/ui/fragment/PullRefreshFragment.kt

@@ -19,8 +19,11 @@ package com.drake.net.sample.ui.fragment
 import com.drake.brv.utils.linear
 import com.drake.brv.utils.setup
 import com.drake.engine.base.EngineFragment
+import com.drake.net.Get
 import com.drake.net.sample.R
 import com.drake.net.sample.databinding.FragmentPullRefreshBinding
+import com.drake.net.sample.model.UserModel
+import com.drake.net.utils.scope
 
 
 class PullRefreshFragment :
@@ -28,19 +31,19 @@ class PullRefreshFragment :
 
     override fun initView() {
         binding.rv.linear().setup {
-            addType<String>(R.layout.item_list)
+            addType<UserModel>(R.layout.item_list)
         }
 
-        // page.onRefresh {
-        //     scope {
-        //         val data = Get<ListModel>("list") {
-        //             param("page", index)
-        //         }.await().data
-        //         addData(data.list) {
-        //             index < data.total
-        //         }
-        //     }
-        // }.autoRefresh()
+        binding.page.onRefresh {
+            scope {
+                val data = Get<List<UserModel>>("list") {
+                    param("page", index)
+                }.await()
+                addData(data) {
+                    index < 100 // 最多加载100个
+                }
+            }
+        }.autoRefresh()
     }
 
     override fun initData() {

+ 5 - 2
sample/src/main/java/com/drake/net/sample/ui/fragment/PushRefreshFragment.kt

@@ -17,10 +17,13 @@
 package com.drake.net.sample.ui.fragment
 
 import com.drake.brv.utils.linear
+import com.drake.brv.utils.models
 import com.drake.brv.utils.setup
 import com.drake.engine.base.EngineFragment
+import com.drake.net.Get
 import com.drake.net.sample.R
 import com.drake.net.sample.databinding.FragmentPushRefreshBinding
+import com.drake.net.sample.model.UserModel
 import com.drake.net.utils.scope
 
 
@@ -29,12 +32,12 @@ class PushRefreshFragment :
 
     override fun initView() {
         binding.rv.linear().setup {
-            addType<String>(R.layout.item_list)
+            addType<UserModel>(R.layout.item_list)
         }
 
         binding.page.onRefresh {
             scope {
-                // rv_push.models = Get<ListModel>("list").await().data.list
+                binding.rv.models = Get<List<UserModel>>("list").await()
             }
         }.autoRefresh()
     }

+ 2 - 2
sample/src/main/res/layout/item_list.xml

@@ -21,7 +21,7 @@
 
         <variable
             name="m"
-            type="String" />
+            type="com.drake.net.sample.model.UserModel" />
     </data>
 
     <LinearLayout
@@ -37,7 +37,7 @@
             android:foreground="?selectableItemBackgroundBorderless">
 
             <TextView
-                android:text="@{m}"
+                android:text="@{m.name}"
                 tools:text="1"
                 android:textStyle="bold"
                 android:gravity="center"