gpt4 book ai didi

在 kotlin 中为 recyclerview 实现 MVVM 设计模式

转载 作者:行者123 更新时间:2023-12-01 13:15:32 25 4
gpt4 key购买 nike

我是 Kotlin 的初学者,正在尝试在 Android 开发中实现 MVVM 设计模式。我必须在片段中实现 Recyclerview。由于在 View 模型中观察到 api 调用,因此我们如何将具有值的适配器设置为来自 View 模型类的 recyclerview。

我的片段类如下所示

class NotesFragment : Fragment() {

lateinit var binding:FragmentNotesBinding
lateinit var viewModel:NoteListViewModel

companion object {
fun newInstance(param1: String): NotesFragment {
val fragment = NotesFragment()
val args = Bundle()
fragment.arguments = args
return fragment
}
}

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
binding = DataBindingUtil.inflate(inflater,R.layout.fragment_notes,container,false)
viewModel = NoteListViewModel(binding)
return binding.root
}

我们将绑定(bind)对象传递给 viewmodel 类并再次从 ViewModel 类更新 viewModel 对象是否是一种好习惯,如下所示

 private fun onSuccess(success: NoteResponse?) {
dataVisibility.value=View.VISIBLE
success.let {
noteAdapter= noteAdapter(documentResponse?.result,mContext)
binding.viewModel=this
}
}

最佳答案

MVVM 的核心是关注点分离。 ViewModel 不应持有对 View(Activity/Fragment)的任何引用。同样,您的数据/存储库层不应包含 ViewModel 引用。

因此,为了实现数据流,您可以使用来自 Android 架构组件的 Reactive Observables(Rx)/LiveData 来传回数据。

1) 在您的 View 模型中创建 MutableLiveData。

2) 使用 api 响应模型设置 MutableLiveData。

3) 观察 Fragment 中的 MutableLiveData 以获取响应数据。

4) 使用数据在片段中设置适配器。

请查看ViewModel - Developer document更好地理解。

关于在 kotlin 中为 recyclerview 实现 MVVM 设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55494038/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com