У меня странная проблема.Я хочу установить обновление для swipeRefreshLayout в зависимости от загрузки данных.Так что у меня есть слушатель, который получает истину / ложь в зависимости от выборки данных.Затем он переходит к ViewModel, где установлен ObservableBoolean, и благодаря DataBinding он должен обновить refreshLayout.Это работает .. когда устройство подключено к Интернету.
Вот мой слушатель
@Override
public void isLoading(boolean loading) {
Log.d(TAG, "isLoading: "+loading);
//binding.slHomeSwipe.setRefreshing(loading); <- this one works
viewModel.isLoading.set(loading); // I want to use this, but it's not working
}
Вот мой ViewModel.onRefresh () работает каждый раз.В логе setLoading () всегда отображается правильное значение.Когда у меня нет подключения к интернету, в журнале отображается ложь, но круг обновления не скрывается.
public class MainFragmentViewModel extends ViewModel {
...
public ObservableBoolean isLoading;
..init - isLoading = new..
public void onRefresh() {
Log.d(TAG, "onRefresh: ");
MainLib.refreshForecast();
}
void setLoading(boolean loading) {
Log.d(TAG, "setLoading: "+loading);
this.isLoading.set(loading);
}
И есть мой макет.Я поставил TextView для проверки правильности логического значения, но это не так.Он работает только тогда, когда работает swipeRefreshLayout.
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/cl_home_main"
...>
<TextView
android:id="@+id/tv_home_test"
android:text="@{String.valueOf(viewModel.isLoading)}"
.../>
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/sl_home_swipe"
app:onRefreshListener="@{() -> viewModel.onRefresh()}"
app:refreshing="@{viewModel.isLoading}"
.../>
<androidx.recyclerview.widget.RecyclerView
.../>
Я не думаю, что причина, по которой он не работает, заключается в сетевом соединении.Но это тот случай, когда я заметил, что он не работает.Когда приложение запускается, слушатель отправляет значение true, а не false, и оно работает.Но когда обновление начинается при смахивании, оно не работает.Я подозреваю, что viewModel каким-то образом отключен от макета.