【问题标题】:MVVM design pattern implementation in kotlin for a recyclerviewkotlin 中的 MVVM 设计模式实现,用于 recyclerview
【发布时间】:2019-08-24 22:00:02
【问题描述】:

我是 Kotlin 的初学者,正在尝试在 android 开发中实现 MVVM 设计模式。我必须在片段中实现 Recyclerview。 由于在 viewmodel 中观察到 api 调用,我们如何将带有值的适配器设置为 viewmodel 类中的 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
}

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

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

【问题讨论】:

    标签: mvvm kotlin data-binding android-recyclerview android-livedata


    【解决方案1】:

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

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

    1) 在您的 Viewmodel 中创建 MutableLiveData。

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-06
      • 2014-04-08
      • 1970-01-01
      • 1970-01-01
      • 2013-08-16
      • 2014-08-31
      • 1970-01-01
      • 2011-07-05
      相关资源
      最近更新 更多