Android 在MVVM中观察LiveData时,如何在onChanged()上生成单独的代码?[未解决]
所以,我实施了Android 在MVVM中观察LiveData时,如何在onChanged()上生成单独的代码?[未解决],android,mvvm,Android,Mvvm,所以,我实施了 public class DriverLoginActivity extends BaseActivity implements Observer<LoginUser> 现在,对于这个活动,我有两个按钮。因此,根据按钮的点击,这个onChanged将被调用。现在我想为登录用户做登录按钮,并注册。我怎样才能使它在一次更改的方法中分离 请告诉我最好的做法 我认为我不应该在viewmodel类中使用setter,在活动中使用getter。它不考虑MVVM实践。对吗?在MV
public class DriverLoginActivity extends BaseActivity implements Observer<LoginUser>
现在,对于这个活动,我有两个按钮。因此,根据按钮的点击,这个onChanged将被调用。现在我想为登录用户做登录按钮,并注册。我怎样才能使它在一次更改的方法中分离
请告诉我最好的做法
我认为我不应该在viewmodel类中使用setter,在活动中使用getter。它不考虑MVVM实践。对吗?在MVVM中,ViewModel设计用于管理数据。理想的方法是在ViewModel中处理API调用。为此使用LiveData并不是LiveData的理想用途 您的ViewModel可以具有
public void onLoginClick(View view) {
//Implement Login API call here
}
public void onRegisterClick(View view){
//Implement Register API call here
}
在您的activity_main.xml中
<Button
android:id="@+id/btnLogin"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="32dp"
android:layout_marginStart="32dp"
android:layout_marginTop="32dp"
android:text="Login"
android:onClick="@{(v) -> LoginViewModel.onLoginClick()}"
<Button
android:id="@+id/btnRegister"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="32dp"
android:layout_marginStart="32dp"
android:layout_marginTop="32dp"
android:text="Register"
android:onClick="@{(v) -> LoginViewModel.onRegisterClick()}"
虽然很大,但让我试着回答。@ChintanSoni焦急地等待着,我希望你能从Kotlin开始,因为我已经很久没有接触Java了:)@ChintanSoni嗯,不。我想我会使用一些在线工具转换成Java。可以给这个项目的GitHub repo链接。Acha,请澄清我2-3件事。你们想说我在点击按钮时想做什么,我应该在viewmodel中做,而不是在activity中?让我们在我的主要活动中说。我有两个按钮,一个用于api调用,一个用于打开新活动。那我该怎么办?还有一个疑问。假设我的活动中有10个按钮。所有的按钮逻辑都完全不同。那么我应该创造10种不同的方法吗?如果在按钮点击逻辑后,我必须在activity中显示结果呢?要打开新activity,您需要实现Navigator,如我发布的示例链接所述。这是导航器的链接。请读一下@DipaliSingh随时:)
<Button
android:id="@+id/btnLogin"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="32dp"
android:layout_marginStart="32dp"
android:layout_marginTop="32dp"
android:text="Login"
android:onClick="@{(v) -> LoginViewModel.onLoginClick()}"
<Button
android:id="@+id/btnRegister"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="32dp"
android:layout_marginStart="32dp"
android:layout_marginTop="32dp"
android:text="Register"
android:onClick="@{(v) -> LoginViewModel.onRegisterClick()}"