Объект наблюдения и привязки Android МВВМ - PullRequest
0 голосов
/ 08 апреля 2020

Как наблюдать объект, который находится во ViewModel из View? Например. У меня есть класс:

class MyClass {
var variable: Int = 0

fun increment() {
    variable += 1
}

В модели представления у меня есть экземпляр этого класса - MyClassObject. Существует фрагмент TextView во фрагменте, и я хочу связать его с MyClassObject.variable

EDIT.

Я сделал что-то вроде этого, и это работает, но я думаю, что это не лучший способ сделай это.

class GameState
{
    private val _variable = MutableLiveData<Int>()
    val variable: LiveData<Int>
        get() = _variable

    init
    {
        _variable.value = 0
    }

    fun increment()
    {
        _variable.value = _variable.value!!.plus(1)
    }
}

Модель представления:

class GameViewModel : ViewModel()
{

    private val _gameState: GameState = GameState()
    val gameState: GameState
        get() = _gameState


    fun imgClick()
    {
        gameState.increment()
    }
}

Просмотр:

       <TextView
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:text="@{gameViewModel.gameState.variable.toString()}" />

       <ImageView
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:onClick="@{() -> gameViewModel.imgClick()}"

1 Ответ

0 голосов
/ 08 апреля 2020

Знаете ли вы LiveData ?, Вы можете использовать LiveData компонент, включенный в Jetpack, для наблюдения в различных слоях, таких как Repository или ViewModel для других слоев.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...