SwipeRefreshLayout как остановить при помощи DataBinding

Рейтинг: 0Ответов: 1Опубликовано: 16.05.2023

Никак не получается остановить SwipeRefreshLayout. Имеется фрагмент

<data>
    <variable
        name="vievModelList"
        type="ru.ch.ViewModelList" />

</data>
 <androidx.swiperefreshlayout.widget.SwipeRefreshLayout
        android:id="@+id/swipeRefresh"
        app:refreshing="@{vievModelList.flUpdate}">

        <androidx.recyclerview.widget.RecyclerView
            android:id="@+id/recyclerViewItem"
            android:adapter="@{myAdapter}"
            tools:listitem="@layout/item_doc_scan" />

</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>

В ViewModelList есть переменная

public MutableLiveData<Boolean> flUpdate = new MutableLiveData<>(false);

При свйпе по swipeRefresh запускается обновление с сервера, с крутящимся "колёсиком". После получения ответа от сервера переводим переменную flUpdate в false

flUpdate.postValue(false);

Но почему то "колёсико" не останавливается. Вот если повернуть экран то оно остановиться. Если же в ViewModel вместо LiveData использовать ObservableField, то всё прекрасно работает.

public ObservableField<Boolean> flUpdate = new ObservableField<>(false);

В чем может быть проблема? Может я не тот параметр меняю у swipeRefresh?

Ответы

▲ 0Принят

Проблема оказалась в том, что я, видимо, неправильно использовал LiveData переменную. После настройки Геррера и Сеттера, как показано ниже, всё заработало.

private MutableLiveData<Boolean> flUpdate = new MutableLiveData<>(false);

public MutableLiveData<Boolean> getFlUpdate() {
    return this.flUpdate;
}

public void setFlUpdate(Boolean status) {
    this.flUpdate.postValue(status);
}