MVVM + 数据绑定 + 视图模型不更新视图

帕维尔萨

我有一个奇怪的问题。我想根据加载数据为 swipeRefreshLayout 设置刷新。所以我有一个监听器,它根据获取数据来获取真/假。然后它转到设置了 ObservableBoolean 的 ViewModel 并且由于 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
        }

这是我的视图模型。onRefresh() 每次都有效。登录 setLoading() 始终显示正确的值。当我没有互联网连接时,日志显示为 false,但刷新圆圈不会隐藏。

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 以某种方式与布局断开了连接。

帕维尔萨

我已经开始工作了!

问题是,当我没有互联网连接并刷新时,我的听众返回 false。这部分我不确定,但我认为因为我的 ObservableBoolean 没有改变状态(保持 false),它对滑动布局没有影响,所以滑动布局内部设置刷新为 true 而我的 ObservableBoolean 为 false . 所以我必须在开始刷新数据后将此值设置为 true。

这是我的 ViewModel 方法

public void onRefresh() {
    Log.d(TAG, "onRefresh: ");
    MainLib.refreshForecast();
    setLoading(true); // <- I was missing this
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

MVVM绑定视图特定的数据类型

来自分类Dev

MVVM绑定视图到可变模型

来自分类Dev

Tabcontrol MVVM 光视图模型绑定

来自分类Dev

更改视图模型数据时,extjs绑定的html不更新

来自分类Dev

WPF:从 MVVM 中的视图模型绑定列表视图项源

来自分类Dev

MVVM从视图读取数据到模型

来自分类Dev

autofac不绑定视图模型中的数据

来自分类Dev

在WPF(MVVM)中将数据绑定到子视图

来自分类Dev

使用MVVM在MainWindow上绑定UserControl视图模型

来自分类Dev

mvvm datagrid无法从视图更新模型

来自分类Dev

mvvm datagrid无法从视图更新模型

来自分类Dev

使用Mvvm时将datacontext视图模型绑定到usercontrol视图

来自分类Dev

使用MVVM模式在WPF中从视图模型到视图进行条件绑定

来自分类Dev

尝试将本地数据源数据绑定到Kendo MVVM中的列表视图

来自分类Dev

WPF MVVM数据绑定

来自分类Dev

MVVM绑定未在视图中显示

来自分类Dev

WPF绑定不更新视图

来自分类Dev

为什么动态更改的数据未在MVVM绑定上更新

来自分类Dev

在MVVM模式中在模型和视图模型之间进行绑定的正确方法是什么?

来自分类Dev

WPF MVVM Light数据绑定上下文菜单以列出视图项

来自分类Dev

节点展开后数据绑定树视图不更新

来自分类Dev

如何将值从TextBox绑定到Mvvm Light中的视图模型

来自分类Dev

如何将值从TextBox绑定到Mvvm Light中的视图模型

来自分类Dev

MVVM体系结构:一种模型-几种视图模型+数据访问位置

来自分类Dev

从MVVM中的视图模型关闭视图

来自分类Dev

mvvm绑定selecteditem以更新listview

来自分类Dev

Xaml条目MVVM数据绑定

来自分类Dev

Winforms MVVM GridView数据绑定

来自分类Dev

MVVM WPF中的数据绑定

Related 相关文章

热门标签

归档