Android простой калькулятор с использованием привязки данных и MVVM - PullRequest
0 голосов
/ 23 апреля 2020

В моем проекте Android у меня есть одна страница с TextView, 2 EditTexts и кнопка. Когда я нажимаю на кнопку, я хочу отобразить в TextView сумму двух чисел, которые я отправил в 2 EditTexts.

Цель этого базового калькулятора c - заставить его работать с использованием данных привязка и MVVM.

Вот что я сделал, но не работает по нескольким причинам:

  • ViewModel:
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 должным образом.

Как я могу заставить это работать?

Спасибо за ваше помощь.

...