a f*_*yer 5 android onclick mvvm onclicklistener android-viewmodel
从 MVP 到 viewModels,当谈到在哪里放置一些代码时,我觉得我有点迷茫。一个示例是放置点击侦听器的位置。在 MVP 我会做这样的事情
myButton.setOnClickListener { presenter.onMyButtonClicked }
我应该对 ViewModel 做同样的事情吗?我不这么认为。因为这意味着我将视图模型视为演示者。
但是,另一方面,如果我在视图(活动或片段)中处理单击侦听器,则视图可能不会像它应该的那样愚蠢。
应该处理点击监听器的最合适的地方在哪里?
小智 5
当您使用 MVVM 架构时,添加 OnClick 侦听器的最佳位置是 View Model。在 MVVM 架构中,通过数据绑定,您可以通过多种方式处理您的点击监听器。
<Button
onClick="@{()->viewModel.onMyButtonClicked()}"/>
<Button
onClick="@{(view)->viewModel.onMyButtonClicked(view)}"/>
Run Code Online (Sandbox Code Playgroud)
在这种情况下,无需为每个都提供 Id。首先,您必须将 ViewModel 注册到您的活动中。在 Activity onCreate 中,您必须设置内容视图,如下所述。
ActivityMainBinding activityMainBinding = DataBindingUtils.setContentView(this,R.layout.activity_main);
activityMainBinding.viewModel = MyViewModel(application)
activityMainBinding.lifecycleOwner = this;
Run Code Online (Sandbox Code Playgroud)
在您的布局文件中,您必须添加 ViewModel 变量
<layout>
<data>
<variable
name="viewModel"
type=".MyViewModel" />
</data>
......
......
. .....
<Button
onClick="@{()->viewModel.onMyButtonClicked()}"/>
<Button
onClick="@{(view)->viewModel.onMyButtonClicked(view)}"/>
</layout>
Run Code Online (Sandbox Code Playgroud)
那么如果你想在Activity中做任何改变,那么你必须使用Observable变量。您必须在活动类中观察的可观察变量。根据您必须执行操作的值。
| 归档时间: |
|
| 查看次数: |
2919 次 |
| 最近记录: |