Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在kotlin中为recyclerview实现MVVM设计模式_Mvvm_Kotlin_Data Binding_Android Recyclerview_Android Livedata - Fatal编程技术网

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

在kotlin中为recyclerview实现MVVM设计模式,mvvm,kotlin,data-binding,android-recyclerview,android-livedata,Mvvm,Kotlin,Data Binding,Android Recyclerview,Android Livedata,我是Kotlin的初学者,试图在android开发中实现MVVM设计模式。我必须在片段中实现一个Recyclerview。 我们如何从viewmodel类中将具有值的适配器设置为recyclerview,因为在viewmodel中观察到api调用 我的fragment类如下所示 class NotesFragment : Fragment() { lateinit var binding:FragmentNotesBinding lateinit var viewModel:NoteListV

我是Kotlin的初学者,试图在android开发中实现MVVM设计模式。我必须在片段中实现一个Recyclerview。 我们如何从viewmodel类中将具有值的适配器设置为recyclerview,因为在viewmodel中观察到api调用

我的fragment类如下所示

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的核心是关注点分离。ViewModel不应包含对视图的任何引用(活动/片段)。同样,数据/存储库层不应包含ViewModel引用

因此,为了实现数据流,您可以使用来自android体系结构组件的反应式观测(Rx)/LiveData来传回数据

1) 在Viewmodel中创建可变LiveData

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

3) 观察片段中响应数据的MutableLiveData

4) 使用这些数据在片段内设置适配器

请检查以便更好地理解