В моем проекте Android у меня есть одна страница с TextView, 2 EditTexts и кнопка. Когда я нажимаю на кнопку, я хочу отобразить в TextView сумму двух чисел, которые я отправил в 2 EditTexts.
Цель этого базового калькулятора c - заставить его работать с использованием данных привязка и MVVM.
Вот что я сделал, но не работает по нескольким причинам:
public class MainViewModel extends ViewModel
{
public MutableLiveData<Long> number1 = new MutableLiveData<>();
public MutableLiveData<Long> number2 = new MutableLiveData<>();
public String getResult()
{
return number1.getValue() + number2.getValue();
}
}
public class MainActivity extends AppCompatActivity
{
private MainViewModel mainViewModel = null;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
ActivityMainBinding activityMainBinding = DataBindingUtil.setContentView(this, R.layout.activity_main);
mainViewModel = ViewModelProviders.of(this).get(MainViewModel.class);
activityMainBinding.setMainViewModel(mainViewModel);
activityMainBinding.setLifecycleOwner(this);
}
}
- Макет (для кнопки нет прослушивателя, потому что я не знаю, что здесь делать):
<?xml version="1.0" encoding="utf-8"?>
<layout>
<data>
<variable
name="mainViewModel"
type="com.testproject.MainViewModel"/>
</data>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@{mainViewModel.getResult()}" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@={mainViewModel.number1}" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@={mainViewModel.number2}" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="ADD" />
</LinearLayout>
</layout>
Я знаю, что есть много ошибок, но я не знаю, как заставить это работать, используя привязку данных и MVVM должным образом.
Как я могу заставить это работать?
Спасибо за ваше помощь.