From 70bce1d9a7cdff37ce2e2bf8bc98c6421706add8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E6=9C=8B=E9=A3=9E?= Date: Mon, 14 Nov 2022 14:19:04 +0800 Subject: [PATCH] =?UTF-8?q?=E6=97=A5=E5=B8=B8=E6=8F=90=E4=BA=A4:2022-11-14?= =?UTF-8?q?.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 王朋飞 --- .../com/wpf/app/quick/helper/AdapterHelper.kt | 55 +++++++++++++++---- .../quickbind/annotations/BindD2VHelper.kt | 9 ++- .../binddatahelper/BindData2ViewHelper.kt | 5 +- .../QuickRefreshRecyclerView.kt | 4 +- .../helper/Request2RefreshView.kt | 11 ++-- .../com/wpf/app/quickutil/CallbackList.kt | 2 +- .../app/quick/demo/RefreshListTestActivity.kt | 2 +- gradle.properties | 2 +- 8 files changed, 61 insertions(+), 29 deletions(-) diff --git a/Quick/src/main/java/com/wpf/app/quick/helper/AdapterHelper.kt b/Quick/src/main/java/com/wpf/app/quick/helper/AdapterHelper.kt index 22c14334..38a05448 100644 --- a/Quick/src/main/java/com/wpf/app/quick/helper/AdapterHelper.kt +++ b/Quick/src/main/java/com/wpf/app/quick/helper/AdapterHelper.kt @@ -15,8 +15,13 @@ import com.wpf.app.quickbind.interfaces.request2View import com.wpf.app.quicknetwork.base.BaseResponseI import com.wpf.app.quicknetwork.call.RealCall import com.wpf.app.quicknetwork.requestCls +import com.wpf.app.quickrecyclerview.data.QuickItemData +import com.wpf.app.quickrecyclerview.data.RequestData +import com.wpf.app.quickrecyclerview.helper.Request2RefreshView +import com.wpf.app.quickrecyclerview.listeners.RefreshView +import com.wpf.app.quickrecyclerview.listeners.Request2ListWithView +import com.wpf.app.quickrecyclerview.listeners.request2List import com.wpf.app.quickutil.LogUtil -import java.lang.reflect.Type /** * Created by 王朋飞 on 2022/5/18. @@ -61,25 +66,55 @@ fun onViewCheck(view: View, onChange: CompoundButton.OnCheckedChangeListener?) { } @BindingAdapter(value = ["apiClass", "methodName", "parameters"], requireAll = false) -fun View.request2This(apiCls: Class, methodName: String, parameters: List?) { +fun View.request2View(apiCls: Class, methodName: String, parameters: List?) { if (!apiCls.isInterface) return - val parameterTypes : Array> = parameters?.map { + val parameterTypes: Array> = parameters?.map { if (it.javaClass == Integer::class.java) Int::class.java else it.javaClass }?.toTypedArray() ?: arrayOf() val method = apiCls.getMethod(methodName, *parameterTypes) - val api: (T.() -> RealCall, Any>) = object : (T) -> RealCall, Any> { - override fun invoke(p1: T): RealCall, Any> { - return method.invoke(p1, *(parameters?.toTypedArray() ?: arrayOf())) as RealCall, Any> + val api: (T.() -> RealCall, Any>) = + object : (T) -> RealCall, Any> { + override fun invoke(p1: T): RealCall, Any> { + return method.invoke( + p1, + *(parameters?.toTypedArray() ?: arrayOf()) + ) as RealCall, Any> + } } - } val request2View = request2View { callback -> requestCls(apiCls) { api() }.success { callback.backData(it?.dataI) - }.fail { - LogUtil.e("请求出错-${it.toString()}") } } as Request2ViewWithView BindData2ViewHelper.bind(this, request2View, Request2View) -} \ No newline at end of file +} + +//@Deprecated("暂未开放") +//@BindingAdapter(value = ["apiClass", "methodName", "parameters"], requireAll = false) +//fun View.request2List(apiCls: Class, methodName: String, parameters: List?) { +// if (this !is RefreshView) return +// if (!apiCls.isInterface) return +// val parameterTypes: Array> = parameters?.map { +// if (it.javaClass == Integer::class.java) Int::class.java else it.javaClass +// }?.toTypedArray() ?: arrayOf() +// val method = apiCls.getMethod(methodName, *parameterTypes) +// val api: (T.() -> RealCall, Any>) = +// object : (T) -> RealCall, Any> { +// override fun invoke(p1: T): RealCall, Any> { +// return method.invoke( +// p1, +// *(parameters?.toTypedArray() ?: arrayOf()) +// ) as RealCall, Any> +// } +// } +// val request2List = request2List { _, callback -> +// requestCls(apiCls) { +// api() +// }.success { +// callback.backData(arrayListOf()) +// } +// } as Request2ListWithView +// BindData2ViewHelper.bind(this, request2List, Request2RefreshView) +//} \ No newline at end of file diff --git a/QuickBind/src/main/java/com/wpf/app/quickbind/annotations/BindD2VHelper.kt b/QuickBind/src/main/java/com/wpf/app/quickbind/annotations/BindD2VHelper.kt index 53560dae..ddeed51b 100644 --- a/QuickBind/src/main/java/com/wpf/app/quickbind/annotations/BindD2VHelper.kt +++ b/QuickBind/src/main/java/com/wpf/app/quickbind/annotations/BindD2VHelper.kt @@ -1,6 +1,5 @@ package com.wpf.app.quickbind.annotations -import android.view.View import androidx.recyclerview.widget.RecyclerView import com.wpf.app.quick.annotations.BindD2VHHelper @@ -8,12 +7,12 @@ import com.wpf.app.quick.annotations.BindD2VHHelper * Created by 王朋飞 on 2022/9/5. * */ -interface BindD2VHelper : - BindD2VHHelper { +interface BindD2VHelper : + BindD2VHHelper { - override fun initView(viewHolder: RecyclerView.ViewHolder?, view: V, data: Data) { + override fun initView(viewHolder: RecyclerView.ViewHolder?, view: View, data: Data) { initView(view, data) } - fun initView(view: V, data: Data) + fun initView(view: View, data: Data) } \ No newline at end of file diff --git a/QuickBind/src/main/java/com/wpf/app/quickbind/helper/binddatahelper/BindData2ViewHelper.kt b/QuickBind/src/main/java/com/wpf/app/quickbind/helper/binddatahelper/BindData2ViewHelper.kt index 8164b9e2..46c61cad 100644 --- a/QuickBind/src/main/java/com/wpf/app/quickbind/helper/binddatahelper/BindData2ViewHelper.kt +++ b/QuickBind/src/main/java/com/wpf/app/quickbind/helper/binddatahelper/BindData2ViewHelper.kt @@ -1,6 +1,5 @@ package com.wpf.app.quickbind.helper.binddatahelper -import android.view.View import com.wpf.app.quickbind.annotations.BindD2VHelper /** @@ -9,8 +8,8 @@ import com.wpf.app.quickbind.annotations.BindD2VHelper */ object BindData2ViewHelper { - fun > bind( - view: V, + fun > bind( + view: View, data: Data, helper: Helper ) { diff --git a/QuickRecyclerView/src/main/java/com/wpf/app/quickrecyclerview/QuickRefreshRecyclerView.kt b/QuickRecyclerView/src/main/java/com/wpf/app/quickrecyclerview/QuickRefreshRecyclerView.kt index 7030f965..39f5744d 100644 --- a/QuickRecyclerView/src/main/java/com/wpf/app/quickrecyclerview/QuickRefreshRecyclerView.kt +++ b/QuickRecyclerView/src/main/java/com/wpf/app/quickrecyclerview/QuickRefreshRecyclerView.kt @@ -28,7 +28,7 @@ open class QuickRefreshRecyclerView @JvmOverloads constructor( @JvmField val refreshCallback = object : CallbackList { - override fun callback(data: List?) { + override fun backData(data: List?) { getQuickAdapter().mDataList?.clear() getQuickAdapter().appendList(data) mRequestData.loadDataSize(data?.size ?: 0) @@ -40,7 +40,7 @@ open class QuickRefreshRecyclerView @JvmOverloads constructor( @JvmField val loadMoreCallback = object : CallbackList { - override fun callback(data: List?) { + override fun backData(data: List?) { appendList(data) mRequestData.loadDataSize(data?.size ?: 0) if (mDataChangeListener?.loadMoreFinish() != true) { diff --git a/QuickRecyclerView/src/main/java/com/wpf/app/quickrecyclerview/helper/Request2RefreshView.kt b/QuickRecyclerView/src/main/java/com/wpf/app/quickrecyclerview/helper/Request2RefreshView.kt index 1fa297d9..c3b620aa 100644 --- a/QuickRecyclerView/src/main/java/com/wpf/app/quickrecyclerview/helper/Request2RefreshView.kt +++ b/QuickRecyclerView/src/main/java/com/wpf/app/quickrecyclerview/helper/Request2RefreshView.kt @@ -1,6 +1,5 @@ package com.wpf.app.quickrecyclerview.helper -import android.view.View import com.wpf.app.quickbind.annotations.BindD2VHelper import com.wpf.app.quickrecyclerview.QuickAdapter import com.wpf.app.quickrecyclerview.QuickRefreshRecyclerView @@ -12,15 +11,15 @@ import com.wpf.app.quickutil.CallbackList import java.lang.reflect.ParameterizedType object Request2RefreshView : - BindD2VHelper> { + BindD2VHelper> { override fun initView( - view: View, + view: RefreshView, data: Request2ListWithView ) { if (view is QuickRefreshRecyclerView) { view.setDataChangeListener(data as Request2ListWithView) - } else if (view is RefreshView && view.getAdapter() is QuickAdapter) { + } else if (view.getAdapter() is QuickAdapter) { val quickAdapter = view.getAdapter() as QuickAdapter val requestData: RequestData = try { ((data.javaClass.genericInterfaces[0] as ParameterizedType).actualTypeArguments[0] as Class<*>).newInstance() as RequestData @@ -31,7 +30,7 @@ object Request2RefreshView : realData.view = view realData.requestData = requestData val refreshCallback = object : CallbackList { - override fun callback(data: List?) { + override fun backData(data: List?) { quickAdapter.mDataList?.clear() quickAdapter.appendList(data) requestData.loadDataSize(data?.size ?: 0) @@ -42,7 +41,7 @@ object Request2RefreshView : } realData.refreshCallback = refreshCallback val loadMoreCallback = object : CallbackList { - override fun callback(data: List?) { + override fun backData(data: List?) { quickAdapter.appendList(data) requestData.loadDataSize(data?.size ?: 0) if (!realData.loadMoreFinish()) { diff --git a/QuickUtil/src/main/java/com/wpf/app/quickutil/CallbackList.kt b/QuickUtil/src/main/java/com/wpf/app/quickutil/CallbackList.kt index 240843ea..cb9cd876 100644 --- a/QuickUtil/src/main/java/com/wpf/app/quickutil/CallbackList.kt +++ b/QuickUtil/src/main/java/com/wpf/app/quickutil/CallbackList.kt @@ -6,5 +6,5 @@ package com.wpf.app.quickutil */ interface CallbackList { - fun callback(data: List?) + fun backData(data: List?) } \ No newline at end of file diff --git a/app/src/main/java/com/wpf/app/quick/demo/RefreshListTestActivity.kt b/app/src/main/java/com/wpf/app/quick/demo/RefreshListTestActivity.kt index 8023c7e1..1ae974ca 100644 --- a/app/src/main/java/com/wpf/app/quick/demo/RefreshListTestActivity.kt +++ b/app/src/main/java/com/wpf/app/quick/demo/RefreshListTestActivity.kt @@ -29,7 +29,7 @@ class RefreshListTestActivity : QuickActivity(R.layout.activity_refresh_list, ti request { 首页文章列表(requestData.page) }.success { - callback.callback(it?.data?.datas) + callback.backData(it?.data?.datas) }.after { if (requestData.isRefresh) { mSmartRefreshLayout?.finishRefresh() diff --git a/gradle.properties b/gradle.properties index 11b6fad2..6a692c3f 100755 --- a/gradle.properties +++ b/gradle.properties @@ -25,7 +25,7 @@ android.nonTransitiveRClass=true #android.disableAutomaticComponentCreation=true -IS_REMOTE=false +IS_REMOTE=true GROUP=com.wpf.app.quick VERSION_NAME=0.5.7