Как изменить текст кнопки с помощью привязки данных - PullRequest
0 голосов
/ 12 октября 2019

Это должно быть просто, но я сталкиваюсь с проблемами. Я пытаюсь изменить текст кнопки в зависимости от того, находится ли список в порядке убывания или в порядке возрастания. Вот что у меня есть:

На мой взгляд модель:

fun ascendingDescending() {
    if (ascendingOrDescending == AscendDescend.ASC) {
        ascendingOrDescending = AscendDescend.DESC
        isAscend = false
    } else {
        ascendingOrDescending = AscendDescend.ASC
        isAscend = true
    }

    val searchAndSort = searchQuery.value
    searchAndSort?.ascendDescend = ascendingOrDescending
    searchQuery.postValue(searchAndSort)

}

В моем .xml файле:

    <com.google.android.material.button.MaterialButton
        android:id="@+id/btnAscendDescend"
        android:layout_width="0dp"
        android:layout_height="45dp"
        android:layout_marginTop="5dp"
        android:layout_marginEnd="10dp"
        android:backgroundTint="@color/colorPrimary"
        app:layout_constraintHorizontal_weight="1"
        app:layout_constraintEnd_toStartOf="@+id/btnFilterBy"
        app:layout_constraintStart_toEndOf="@+id/btnSortBy"
        app:layout_constraintTop_toBottomOf="@+id/guideline"
        app:layout_constraintHorizontal_chainStyle="spread"
        android:text="@{viewModel.isAscend ? @string/work_packages_descend : @string/work_packages_ascend}"
        android:onClick="@{() -> viewModel.ascendingDescending()}"
        />

Когда я нажимаю кнопку, текст не изменяется от По убыванию до По возрастанию.

1 Ответ

1 голос
/ 12 октября 2019

Можете ли вы добавить binding.lifecycleOwner = this точно после создания привязки. А также заставьте sur сделать isAscend как MutableLiveData.

...