Android listView 适配器是否应该有 api 个调用
Should Android listView adapter have api calls
您好,我有一个显示项目列表和所有与 setItems
、getCount
、notifyDataSetChanged
.
相关的功能的适配器
适配器还通过用例调用了 api。
结构是
适配器 -> 用例 -> 存储库 -> api层
我知道片段和活动不应包含对 api 的调用(在我的实例中是用例)。
适配器也应该有 api 调用(在我的实例中是用例)
谢谢
R
可以,但从软件设计的角度我不推荐。
Adapter
的职责是将您的 Data
与 View
连接起来,并使其可供 ListView
/RecyclerView
使用。适配器不应该有任何其他依赖(知识)。这也将使它对变化更加健壮。
因此您应该考虑只有 Activity/Fragment 与您的 Presenter 对话并将 Presenter 的结果委托给 Adapter。
这也将使(Presenter 的)(单元)测试更容易。
class YourActivity: Activity() {
private val presenter: YourPresenter = // ...
override fun onCreate() {
val adapter: YourAdapter = YourAdapter()
recyclerView.setAdapter(adapter)
val data = presenter.getData()
adapter.submit(data)
}
}
class YourPresenter(private val useCase: UseCase : Presenter() {
fun getData(): List<Data> {
return useCase.fetchData()
}
}
您好,我有一个显示项目列表和所有与 setItems
、getCount
、notifyDataSetChanged
.
适配器还通过用例调用了 api。
结构是
适配器 -> 用例 -> 存储库 -> api层
我知道片段和活动不应包含对 api 的调用(在我的实例中是用例)。
适配器也应该有 api 调用(在我的实例中是用例)
谢谢 R
可以,但从软件设计的角度我不推荐。
Adapter
的职责是将您的 Data
与 View
连接起来,并使其可供 ListView
/RecyclerView
使用。适配器不应该有任何其他依赖(知识)。这也将使它对变化更加健壮。
因此您应该考虑只有 Activity/Fragment 与您的 Presenter 对话并将 Presenter 的结果委托给 Adapter。 这也将使(Presenter 的)(单元)测试更容易。
class YourActivity: Activity() {
private val presenter: YourPresenter = // ...
override fun onCreate() {
val adapter: YourAdapter = YourAdapter()
recyclerView.setAdapter(adapter)
val data = presenter.getData()
adapter.submit(data)
}
}
class YourPresenter(private val useCase: UseCase : Presenter() {
fun getData(): List<Data> {
return useCase.fetchData()
}
}