Android listView 适配器是否应该有 api 个调用

Should Android listView adapter have api calls

您好,我有一个显示项目列表和所有与 setItemsgetCountnotifyDataSetChanged.

相关的功能的适配器

适配器还通过用例调用了 api。

结构是

适配器 -> 用例 -> 存储库 -> api层

我知道片段和活动不应包含对 api 的调用(在我的实例中是用例)。

适配器也应该有 api 调用(在我的实例中是用例)

谢谢 R

可以,但从软件设计的角度我不推荐。

Adapter 的职责是将您的 DataView 连接起来,并使其可供 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()  
  }
}