Skip to content

Commit 036d057

Browse files
committed
清理代码;更新注释;优化点击事件处理
1 parent 05d1a45 commit 036d057

File tree

15 files changed

+82
-116
lines changed

15 files changed

+82
-116
lines changed

app/src/main/java/me/yifeiyuan/flapdev/components/TestAllComponent.kt

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -66,11 +66,7 @@ class TestAllComponent(view: View) : Component<TestAllModel>(view) {
6666

6767
val logService = adapter.getAdapterService(TestService::class.java)
6868
logService?.log("LogService Message")
69-
70-
val logService2 = adapter.getAdapterService<TestService>("LogService")
71-
72-
val result = logService2?.testResult()
73-
messageTextView.text = result
69+
messageTextView.text = logService?.testResult()
7470
}
7571
}
7672
}

app/src/main/java/me/yifeiyuan/flapdev/testcases/BaseTestcaseFragment.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,6 @@ open class BaseTestcaseFragment : Fragment(), Scrollable {
142142
}
143143

144144
adapter.registerAdapterService(TestService::class.java)
145-
adapter.registerAdapterService("LogService", TestService::class.java)
146145

147146
initLayoutManagers()
148147
initItemDecorations()

app/src/main/java/me/yifeiyuan/flapdev/testcases/DSLTestcase.kt

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,16 @@ import android.widget.ImageView
66
import me.yifeiyuan.flap.Component
77
import me.yifeiyuan.flap.FlapAdapter
88
import me.yifeiyuan.flap.delegate.AdapterDelegate
9+
import me.yifeiyuan.flap.delegate.LayoutAdapterDelegate
910
import me.yifeiyuan.flap.dsl.adapterDelegate
1011
import me.yifeiyuan.flap.dsl.adapterHook
11-
import me.yifeiyuan.flap.ext.bindButton
12-
import me.yifeiyuan.flap.ext.bindTextView
13-
import me.yifeiyuan.flap.ext.bindView
12+
import me.yifeiyuan.flap.ext.*
1413
import me.yifeiyuan.flap.hook.AdapterHook
1514
import me.yifeiyuan.flapdev.R
1615
import me.yifeiyuan.flapdev.components.SimpleImageModel
1716
import me.yifeiyuan.flapdev.components.SimpleTextModel
1817
import me.yifeiyuan.flapdev.components.TestAllModel
18+
import me.yifeiyuan.flapdev.components.TestBinderModel
1919
import me.yifeiyuan.flapdev.mockMultiTypeModels
2020

2121
private const val TAG = "DSLTestcase"
@@ -157,7 +157,9 @@ class DSLTestcase : BaseTestcaseFragment() {
157157
}
158158
}
159159

160-
160+
// val layoutDelegate = LayoutAdapterDelegate(TestBinderModel::class.java, R.layout.flap_item_binder) {
161+
// model: TestBinderModel, position: Int, payloads: List<Any>, adapter: FlapAdapter ->
162+
// }
161163

162164
adapter.registerAdapterDelegates(simpleTextDelegate, simpleImageDelegate, testAllDelegate)
163165

flap/src/main/java/me/yifeiyuan/flap/Component.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ import me.yifeiyuan.flap.delegate.AdapterDelegate
3232
* @since 2020/9/22
3333
* @since 3.0.0
3434
*/
35-
abstract class Component<T>(itemView: View) : RecyclerView.ViewHolder(itemView), LifecycleObserver, ComponentConfig {
35+
open class Component<T>(itemView: View) : RecyclerView.ViewHolder(itemView), LifecycleObserver, ComponentConfig {
3636

3737
/**
3838
* 默认情况下 context 是 Activity Context ;
@@ -55,6 +55,7 @@ abstract class Component<T>(itemView: View) : RecyclerView.ViewHolder(itemView),
5555
}
5656

5757
/**
58+
* 执行数据绑定,处理业务逻辑
5859
*
5960
* @param model The model that you need to bind.
6061
* @param position position
@@ -76,7 +77,7 @@ abstract class Component<T>(itemView: View) : RecyclerView.ViewHolder(itemView),
7677
*
7778
* @see onBind
7879
*/
79-
abstract fun onBind(model: T)
80+
open fun onBind(model: T) {}
8081

8182
protected fun <V : View> findViewById(@IdRes viewId: Int): V {
8283
return itemView.findViewById<View>(viewId) as V

flap/src/main/java/me/yifeiyuan/flap/Flap.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import me.yifeiyuan.flap.delegate.AdapterDelegate
77
import me.yifeiyuan.flap.delegate.AdapterDelegateManager
88
import me.yifeiyuan.flap.delegate.FallbackAdapterDelegate
99
import me.yifeiyuan.flap.delegate.IAdapterDelegateManager
10-
import me.yifeiyuan.flap.hook.AdapterHook
1110
import me.yifeiyuan.flap.hook.AdapterHookManager
1211
import me.yifeiyuan.flap.hook.IAdapterHookManager
1312
import me.yifeiyuan.flap.pool.ComponentPool

flap/src/main/java/me/yifeiyuan/flap/FlapAdapter.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,6 @@ open class FlapAdapter : RecyclerView.Adapter<Component<*>>(), IAdapterHookManag
107107
adapterHooks.addAll(Flap.adapterHooks)
108108
adapterDelegates.addAll(Flap.adapterDelegates)
109109
adapterServices.putAll(Flap.adapterServices)
110-
namedAdapterServices.putAll(Flap.namedAdapterServices)
111110

112111
Flap.globalDefaultAdapterDelegate?.let {
113112
defaultAdapterDelegate = it

flap/src/main/java/me/yifeiyuan/flap/IRegistry.kt

Lines changed: 0 additions & 29 deletions
This file was deleted.

flap/src/main/java/me/yifeiyuan/flap/delegate/AdapterDelegate.kt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,15 @@ import java.lang.reflect.ParameterizedType
99

1010
/**
1111
*
12-
* A delegate class that delegates some methods of FlapAdapter.
12+
* AdapterDelegate 是一个代理类,负责代理 Adapter 的部分方法。
1313
*
14-
* AdapterDelegate 是 FlapAdapter 的代理类,负责代理 Adapter 的部分方法。
15-
* 当一个 AdapterDelegate.delegate(model) 返回 true 表示它负责接手这个数据模型。
14+
* 每个 model 都应该有一个对应的 AdapterDelegate,当一个 AdapterDelegate.delegate(model) 返回 true 表示它负责代理这个 model。
1615
* 一般一个 AdapterDelegate 代理一个类型的 Model,是一对一的关系,这样更加解耦。
1716
* 这样可以解耦 Adapter 对不同类型的 Model 的处理。
1817
*
1918
* 如果一个 model 没有任何 AdapterDelegate 代理,那么 FallbackAdapterDelegate 会兜底处理
2019
* @see FallbackAdapterDelegate
2120
*
22-
*
2321
* Created by 程序亦非猿 on 2021/9/22.
2422
*
2523
* Flap Github: <a>https://github.com/AlanCheen/Flap</a>

flap/src/main/java/me/yifeiyuan/flap/delegate/IAdapterDelegateManager.kt

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,26 +3,41 @@ package me.yifeiyuan.flap.delegate
33
import androidx.annotation.NonNull
44

55
/**
6-
* Created by 程序亦非猿 on 2022/9/5.
6+
* AdapterDelegate 管理者的抽象
7+
*
8+
* @see AdapterDelegateManager
79
*
10+
* Created by 程序亦非猿 on 2022/9/5.
811
* @since 3.1.0
912
*/
1013
interface IAdapterDelegateManager {
1114

1215
val adapterDelegates: MutableList<AdapterDelegate<*,*>>
1316

17+
/**
18+
* 注册单个 AdapterDelegate
19+
*/
1420
fun registerAdapterDelegate(@NonNull adapterDelegate: AdapterDelegate<*,*>){
1521
this.adapterDelegates.add(adapterDelegate)
1622
}
1723

24+
/**
25+
* 注册多个 AdapterDelegate
26+
*/
1827
fun registerAdapterDelegates(vararg adapterDelegates: AdapterDelegate<*, *>){
1928
this.adapterDelegates.addAll(adapterDelegates)
2029
}
2130

31+
/**
32+
* 注销单个 AdapterDelegate
33+
*/
2234
fun unregisterAdapterDelegate(@NonNull adapterDelegate: AdapterDelegate<*,*>){
2335
this.adapterDelegates.remove(adapterDelegate)
2436
}
2537

38+
/**
39+
* 注销所有 AdapterDelegate
40+
*/
2641
fun clearAdapterDelegates(){
2742
adapterDelegates.clear()
2843
}

flap/src/main/java/me/yifeiyuan/flap/delegate/LayoutAdapterDelegate.kt

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,13 @@ import me.yifeiyuan.flap.FlapAdapter
1212
*
1313
* LayoutAdapterDelegate 是为了降低创建 Component 和 自定义 AdapterDelegate 带来的使用成本而创建的。
1414
*
15-
* 使用 LayoutAdapterDelegate 必须要保证的情况:
16-
* 1. Model 与 LayoutAdapterDelegate 是一对一的关系
17-
* 2. layoutId 可以当做 itemViewType 直接用
15+
* 使用 LayoutAdapterDelegate 只适用于:
16+
* - layoutId 可以当做 itemViewType 直接用
17+
* - 只关心 onBind 处理逻辑
18+
*
19+
* LayoutAdapterDelegate 的使用体验介于 自定义 AdapterDelegate 和 DSL 中间,看情况选择。
20+
*
21+
* @see me.yifeiyuan.flap.dsl.adapterDelegate
1822
*
1923
* Created by 程序亦非猿 on 2021/10/27.
2024
* @since 3.0.0
@@ -34,7 +38,7 @@ class LayoutAdapterDelegate<T>(
3438

3539
override fun onCreateViewHolder(inflater: LayoutInflater, parent: ViewGroup, viewType: Int): Component<T> {
3640
val view = inflater.inflate(viewType, parent, false)
37-
return LayoutComponent(view)
41+
return Component(view)
3842
}
3943

4044
override fun onBindViewHolder(component: Component<*>, data: Any, position: Int, payloads: List<Any>, adapter: FlapAdapter) {
@@ -48,10 +52,4 @@ class LayoutAdapterDelegate<T>(
4852
override fun getItemId(model: Any, position: Int): Long {
4953
return itemId
5054
}
51-
}
52-
53-
class LayoutComponent<T>(view: View) : Component<T>(view) {
54-
55-
override fun onBind(model: T) {
56-
}
5755
}

0 commit comments

Comments
 (0)