首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在我的片段中无法观察到来自ViewModel的LiveData<MutableList<T>>

在你的片段中无法观察到来自ViewModel的LiveData<MutableList<T>>是因为可能存在以下几种情况:

  1. 数据未正确设置:在ViewModel中,LiveData<MutableList<T>>需要通过setValue()或postValue()方法设置数据。确保在ViewModel中正确设置LiveData的值。
  2. 观察者未正确注册:在片段中,确保正确注册LiveData观察者。使用observe()方法将LiveData与片段的生命周期进行关联,并在观察者的回调方法中处理数据更新。
  3. 数据类型不匹配:确保LiveData的泛型类型与观察者的参数类型匹配。如果LiveData的泛型类型为MutableList<T>,则观察者的参数类型应为List<T>或MutableList<T>。
  4. 生命周期不一致:确保LiveData和观察者的生命周期一致。如果LiveData的生命周期超过了观察者的生命周期,观察者将无法接收到更新的数据。可以使用getViewLifecycleOwner()方法获取片段的生命周期所有者。
  5. 数据未更新:检查ViewModel中LiveData的数据是否已经更新。如果数据没有发生变化,观察者将不会收到更新的通知。可以在ViewModel中使用MutableLiveData的setValue()或postValue()方法更新数据。

总结起来,要解决无法观察到来自ViewModel的LiveData<MutableList<T>>的问题,需要确保正确设置数据、正确注册观察者、匹配数据类型、保持一致的生命周期,并检查数据是否已经更新。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android BaseQuickAdapter3.0.4版本二级列表使用及遇到问题

,使用版本是2.9.4,使用中发现当二级列表展开时对子列表数据进行操作后,列表展开和闭合显示数据会异常。...实现效果 ‍上图中可以看出,展开列表做删除明细操作后,数据显示就异常了,这个是2.X版本中出现问题,现在3.0里面还是有这个情况。...不过这个倒不是本篇重点,实际用到这个场景应该比较少,本篇主要是说一下3.0版本多级列表实现方式,另外这个Demo也是初次尝试MutableSharedFlow来替代LiveData,使用中有些还没理解明白...代码实现 微卡智享 2.x版本,使用多级列表用BaseMultiItemQuickAdapter,定义类要继承自MultiItemEntity,现在3.0版本使用是BaseNodeAdapter...Activity先定义LifecycleCoroutineScope 监听Flow数据改变,需要在onStart实现,onStop还有停止监听 其实像我这么简单数据来说,感觉还是用

2.9K30
  • 解决Android开发痛点问题用Kotlin Flow

    随着业务场景复杂度提升,LiveData作为数据唯一载体似乎渐渐无法担此重任,其中一个痛点就是由于模糊了“状态”和“事件”界限。...项目由MVP过渡到MVVM时,其中一个典型重构手段就是将Presenter回调写法改写成ViewModel持有LiveData由View层订阅,比如以下场景: 大力自习室,当老师切换至互动模式时...LiveData会保证订阅者总能在值变化时候观察到最新值,并且每个初次订阅观察者都会执行一次回调方法。...那么回到我们问题,这里用冷流是否可行?显然并不合适,因为首先直观上冷流就无法构造器以外发射数据。...这也是花很长篇幅去介绍解决两个问题过程原因。只有真的痛过才会感受到选择合适架构优势。 单向数据流,任何状态变化都来自事件,因此更容易定位出问题。

    3.2K20

    引入Jetpack架构后,你App会发生哪些变化?

    无法收到通知,这样设计有什么好处?...,其实这二者根本没有同一个层次,MVVM ViewModel是MVVM架构一个角色,看不见摸不着只是一种思想。...既然是状态托管框架那ViewModel第一要务 就要时时刻刻保证最新状态分发到视图层,这让不禁想到了LiveData,数据承载以及分发交给Livedata,而ViewModel专注于托管LiveData...想要使两个Fragment播放信息实时同步,最优雅方式是将播放状态托管Activity作用域下ViewModelLiveData,然后各自做状态监听,这样只有要有一方改变就能立即通知到另一方,...并不是同意xml写业务逻辑这一观点,觉得碰到问题就得去解决问题,如果解决问题路上有障碍就尽量扫清障碍,而不是一味逃避。 如{vm.isShow ?

    1K31

    你应该知道kotlin实用技巧

    我们Kotlin代码,我们可以反序列化JSON字符串,甚至根本不需要传递类型信息!...MVVM模式与ViewModel 我们也常常用LiveData来标识网络请求状态 我们需要定义请求开始,请求成功,请求失败,三个LiveData 这其实也是很冗余重复代码,因此我们可以进行一定封装...,封装一个带状态LiveData 定义如下: typealias StatefulLiveData = LiveData> typealias StatefulMutableLiveData...3.类里面声明一些可空函数类型可变(var)私有成员变量,并且回调函数拿到对应变量实现它invoke函数,传入对应参数。...4.定义一些跟回调接口一样名字,但是参数是对应函数类型函数,并且将函数类型赋值给当前类对应成员变量。

    1.5K10

    引入Jetpack架构后,你App会发生哪些变化?

    LiveData无法收到通知,这样设计有什么好处?...相提并论,其实这二者根本没有同一个层次,MVVM ViewModel是MVVM架构一个角色,看不见摸不着只是一种思想。...既然是状态托管框架那ViewModel第一要务 就要时时刻刻保证最新状态分发到视图层,这让不禁想到了LiveData,数据承载以及分发交给Livedata,而ViewModel专注于托管LiveData...Activity作用域下ViewModelLiveData,然后各自做状态监听,这样只有要有一方改变就能立即通知到另一方,简单又安全,具体细节可至开源项目中查看。...并不是同意xml写业务逻辑这一观点,觉得碰到问题就得去解决问题,如果解决问题路上有障碍就尽量扫清障碍,而不是一味逃避。 如{vm.isShow ?

    1.9K80

    引入Jetpack架构后,你App会发生哪些变化?

    同时也有一个基于Jetpack MVVM完整开源项目,已经按照上篇文章提出思想做了重构,目前托管Github,希望也能为你提供一些帮助。...LiveData无法收到通知,这样设计有什么好处?...相提并论,其实这二者根本没有同一个层次,MVVM ViewModel是MVVM架构一个角色,看不见摸不着只是一种思想。...既然是状态托管框架那ViewModel第一要务 就要时时刻刻保证最新状态分发到视图层,这让不禁想到了LiveData,数据承载以及分发交给Livedata,而ViewModel专注于托管LiveData...Activity作用域下ViewModelLiveData,然后各自做状态监听,这样只有要有一方改变就能立即通知到另一方,简单又安全,具体细节可至开源项目中查看。

    84000

    LiveData beyond the ViewModel

    这个系列做了协程和Flow开发者一系列文章翻译,旨在了解当前协程、Flow、LiveData这样设计原因,从设计者角度,发现他们问题,以及如何解决这些问题,pls enjoy it。...img LiveData beyond the ViewModel 可观察范式视图控制器和ViewModel之间工作得非常好,所以你可以用它来观察你应用程序其他组件,并利用生命周期意识优势。...(liveData1, liveData2) } return result } 数据实际组合是combineLatestData方法完成。...另一个选择是使用令牌上传器observeForever(),并以某种方式钩住用户管理器生命周期,完成后删除订阅。 然而,你不需要让所有的东西都能被观察到。...ViewModel,我们需要公开一个randomNumber属性,从生成器获取数字。为此使用MediatorLiveData并不理想,因为它要求你每次需要新数字时都要添加源。

    1.5K30

    【译】LiveData三连

    作为一个经验法则,建议几乎所有考虑过(或已经使用过)其他替代方案情况下都使用(或切换到)LiveData,特别是我们希望以干净、稳健和合理方式根据数据变化更新用户界面的所有场景。...When to load data in ViewModels 最近,对一个表面上很简单问题进行了出乎意料长时间讨论。我们代码,我们究竟应该在哪里触发ViewModel数据加载。...这些组件一个核心部分是带有LiveDataViewModel,它是一个可观察到生命周期感知数据持有者,用于连接Activity和ViewModel。...因此,肯定会有一种试图最大限度地利用它们诱惑:) 在这篇文章将谈谈什么情况下不推荐使用LiveData,以及你可以使用替代方案。...它允许你通过配置变化来持久化UI状态。如果不需要持久化数据,那么在你使用案例LiveData无法实现其目的。

    1.7K20

    你应该知道kotlin实用技巧

    我们Kotlin代码,我们可以反序列化JSON字符串,甚至根本不需要传递类型信息!...称之为 SAM Type ), Kotlin 可以直接用 Lambda 来表示 —— 当然前提是 Lambda 所表示函数类型能够跟接口中方法相匹配。...by bindToPreferenceFieldNullable() } 带状态LiveData 目前我们开发过程中越来越多使用MVVM模式与ViewModel 我们也常常用LiveData来标识网络请求状态...3.类里面声明一些可空函数类型可变(var)私有成员变量,并且回调函数拿到对应变量实现它invoke函数,传入对应参数。...4.定义一些跟回调接口一样名字,但是参数是对应函数类型函数,并且将函数类型赋值给当前类对应成员变量。

    1.4K00

    安卓开发Model-View-Presenter(MVP模式)

    确实,一段时间内,一个非常基础MVP已经被提出来打破 God-Object (完全负责所有的事情),而且,就在不久之前,谷歌提出MVVM,使用它体系结构组件,正在被采用(ViewModel, LiveData...为了说明本文中解释内容,参考GitHub上一个小示例/项目(纯模型-视图-演示者):Pure MVP in GitHub.。...View Android,我们视图实现将对应于一个活动或一个片段(示例/项目中是片段),但它可以是一个ViewModel,甚至是一个可视化组件。...这里不讨论视图是由N个片段组成活动情况,因为每个片段都有M个演示者,我们可以假设视图是这些片段每一个,尽管它们随后被分组到一个片段(甚至另一个片段)。...此外,这个视图模型可以直接将数据绑定注入到XML,并使用LiveData将可视化组件绑定到LiveData可观察对象。

    1.6K30

    Android从零开始搭建MVVM架构(4)——LiveData

    一个 LiveData对象通常存储ViewModel对象,并通过getter方法访问,如以下示例所示: public class NameViewModel extends ViewModel {...MutableLiveData类暴露公用setValue(T)和postValue(T)方法,如果需要编辑存储LiveData对象值,必须使用这两个方法。...注意:必须要从主线程调用setValue(T) 方法来更新LiveData 对象. 如果代码工作线程执行, 你可以使用postValue(T) 方法来更新LiveData对象....如果您认为ViewModel对象需要Lifecycle对象,则转换可能是更好解决方案。 例如,假设您有一个接受地址并返回该地址邮政编码UI组件。...与从网络访问数据关联LiveData对象。 您Activity只需观察MediatorLiveData对象即可接收来自两个数据源更新。

    2.3K30

    LiveData 正确使用姿势以及反模式

    借助 LiveData 能力, View(Activity 或者 Fragment)和 ViewModel 之间,使用 LiveData 通信,当 LiveData 发生变化时候,订阅了该 LiveData...状态一直持续),但无法知道是什么时候开灯(事件是之前发生,转瞬即逝) 事件触发可以让状态发生转换 而 LiveData 特性「监听时能够接收到监听之前已经改变状态」正是为了「状态」而设计。...运行之后会不做任何操作会输入如下日志: sample: 小明付款了 100 元 复制代码 这里其实不符合预期,小明是之前付款了 100 元,而我是之后才开始监听,此刻并不需要通知之前发生事情...一种更好设计应该把 LiveData T 定义成不可变( Immutable),比如例子 User 可以定义成如下 data class User(val name: String) //...ViewHolder 监听 ViewModel LiveData,然后此时传递 lifecycleOwner 是对应 Fragment。

    1.1K20

    LiveData 非粘性消息探索和尝试

    LiveData 默认是支持粘性消息(关于什么是粘性消息,请移步另一篇文章:LiveData 正确使用姿势以及反模式 ),如何通过 LiveData 来实现非粘性消息呢,本文将在官博基础上,...分析几种尝试方案,以及他们各自优缺点 姿势一:重置 LiveData observer 里加上一个判断,当 LiveData 值符合某个条件时候,才做出响应更新 UI 逻辑,然后提供一个重置...(this, Observer { Log.d("sample", "到账 ${it} 元") }) } // 以上代码 Activity onCreate() //...let { Log.d("sample", "到账 ${it} 元") } }) } // 以上代码 Activity onCreate() // 当 Activity 启动时候就会输出日志...,具体可以参考另一篇文章:自定义生命周期以及实现生命周期感知能力 ---- 相关文章 使用 Architecture Component 实现 MVVM 正确姿势 LiveData 正确使用姿势以及反模式

    95830

    Android Jetpack - LiveData

    例如,后台活动返回前台后立即接收最新数据 配置更改友好 如果由于配置更改(例如设备轮换)而重新创建活动或片段,则会立即接收最新可用数据 资源共享 你可以使用单例模式扩展 LiveData 对象以包装系统服务...: 1、创建持有任意类型 LiveData 实例,这一步通常在 ViewModel 完成 2、创建一个 Observer 对象并重写其 onChanged() 方法,该方法会在 LiveData 数据更改时被回调并返回最新数据...LiveData 对象通常存储ViewModel 对象,并通过 getter 方法访问,如以下示例所示: class NameViewModel : ViewModel() { private...与 Room 一起使用 LiveData Room 持久化库支持可观察查询并返回 LiveData 对象,这些查询一般 DAO 编写 更新数据库时,Room 会生成更新 LiveData 对象所需所有代码...具体可以参考 Android Jetpack - Room 一文所提供代码示例 转换 LiveData 您可能希望LiveData 对象分派给观察者之前更改存储 LiveData 对象值,

    2K30

    ViewModels and LiveData- Patterns + AntiPatterns

    这个系列做了协程和Flow开发者一系列文章翻译,旨在了解当前协程、Flow、LiveData这样设计原因,从设计者角度,发现他们问题,以及如何解决这些问题,pls enjoy it。...ViewModels和View之间进行通信推荐方式是观察者模式,使用LiveData来自其他库观察变量方式。...Observer Pattern img Android设计表现层一个非常方便方法是让View(Activity或Fragment)观察(订阅)ViewModel变化。...ViewModel配置变化时被持久化,所以当重新请求发生时,不需要重新查询外部数据源(如数据库或网络)。 当长期运行操作结束时,ViewModel观察变量会被更新。数据是否被观察并不重要。...使用LiveData存储库和ViewModel之间进行通信,其方式类似于View和ViewModel之间使用LiveData。 这点用Flow也可以解决。

    1.1K30

    响应式架构最佳实践——MVI

    ⭐ MVVM Architecture: Model-View-ViewModel架构,视图拥有ViewModel实例,它根据用户输入/动作调用相应函数。...总之,MVVM架构最好部分是ViewModel,但我认为它没有遵循MVC模式定义Model概念,因为MVVM,DAO(数据访问对象)抽象被认为是Model,视图观察来自ViewModel多个可观察属性状态变化...在下面的架构试图结合MVVM和MVI模式优点,为任何Android项目提供更好架构,在此基础上,通过为View和ViewModel创建基类,尽可能多地抽象出一些东西。...MVI + LiveData + ViewModel = ❤️ Architecture: 继续之前,让我们重新强调一下MVI架构一些基本术语。...另外,它在内部创建了viewStateObserver、viewEffectObserver LiveData-Observers,并开始观察ViewModelActivityonCreate()暴露

    1.7K20

    6. Jetpack---Paging你知道怎样上拉加载吗?

    背景 Jetpack_Note系列,对每一篇分析都有相对应代码片段及使用,把它做成了一个APP,目前功能还不完善,代码也上传到了GitHub上,参考了官方Demo以及目前网上一些文章...分页库支持加载有限以及无限list,比如一个持续更新信息源,分页库可以与RecycleView无缝集合,它还可以与LiveData或RxJava集成,观察界面数据变化。 ?...Paging库中提供了三个子类来让我们不同场景情况下使用: PageKeyedDataSource:如果后端API返回数据是分页之后,可以使用它;例如:官方DemoGitHub APISearchRespositories...就可以返回分页数据,我们GitHub API请求制定查询关键字和想要哪一页,同时也可以指明每个页面的项数。...刷新数据 基本原理图上我们可以很清晰了解到了,本篇文章Demo结合了ViewModel以及DataBinding进行了数据存储和绑定。

    1.8K40
    领券