Ove*_*asy 1 data-binding android mvvm viewmodel android-recyclerview
我正在制作一个函数,当我触摸 recyclerView 项目时,该函数会打开一个对话框。我将 viewModel 放在适配器中,将 onClick 函数放在 viewHolder 中,以使用 viewModel 打开对话框。
\n看起来像这样。
\n Adapter(viewModel) // Initialize adapter in Activity or ViewModel
\xe2\x86\x93
\nclass Adapter(viewModel: ViewModel) : ViewModel() {\n inner class ViewHolder() {\n fun onClick(binding: RecyclerViewItemBinding) : RecyclerView.ViewHolder(binding.root) {\n Dialog(viewModel) // Open Dialog with viewModel\n }\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n我可以在适配器或对话框中使用 ViewModel 吗?如果不能,我该怎么办?我需要通过从对话框接收更改后的值来更改 ViewModel 的数据。
\nViewModel 应仅限于活动/片段,避免将其传递到您喜欢的任何地方。使用 liveData 传递事件,例如将适配器中可拦截的单击事件传递到 viewModel 所附加到的活动/片段。还可以使用 liveData 通知适配器有关 viewModel 内部发生的数据更改。我创建了一个简单的项目来反映您想要的结果,请看一下:
https://github.com/phamtdat/ViewModelForAdapterDemo
关键点:
这样你就可以清楚地分离关注点:viewModel - 仅处理数据活动 - 仅处理 UI 事件(在我们的例子中为项目的单击事件并显示对话框)适配器 - 仅处理项目 UI 的正确呈现
为了简单起见,我没有使用 dataBinding,但如果有时间的话我当然会使用,这样你就不必更新 viewHolder 内的 UI,而只需将模型传递给绑定即可。
| 归档时间: |
|
| 查看次数: |
2150 次 |
| 最近记录: |