首页
学习
活动
专区
工具
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中还有停止监听 其实像我这么简单的数据来说,感觉还是用

3.2K30
  • 解决Android开发中的痛点问题用Kotlin Flow

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

    3.3K20

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

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

    1K31

    你应该知道的kotlin实用技巧

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

    1.5K10

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

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

    1.9K80

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

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

    84300

    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数据的加载。...这些组件的一个核心部分是带有LiveData的ViewModel,它是一个可观察到的生命周期感知的数据持有者,用于连接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

    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.4K30

    安卓开发中的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

    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.2K20

    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 的正确使用姿势以及反模式

    97930

    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,并开始观察ViewModel在Activity的onCreate()中暴露的

    1.8K20

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

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

    1.8K40
    领券