Questions tagged «android-livedata»

7
MutableLiveData中的setValue()和postValue()的区别
有两种方法可以使的变化值MutableLiveData。但是setValue()&postValue()in 之间有什么区别MutableLiveData。 我找不到相同的文档。 这是MutableLiveDataAndroid 类。 package android.arch.lifecycle; /** * {@link LiveData} which publicly exposes {@link #setValue(T)} and {@link #postValue(T)} method. * * @param <T> The type of data hold by this instance */ @SuppressWarnings("WeakerAccess") public class MutableLiveData<T> extends LiveData<T> { @Override public void postValue(T value) { super.postValue(value); } @Override public …

3
为什么有单独的LiveData子类MutableLiveData子类?
看起来MutableLiveData与LiveData仅通过公开setValue()和postValue()方法有所不同,而LiveData它们却受到保护。 有什么理由为此更改创建一个单独的类,而不是简单地将这些方法LiveData本身定义为公共方法? 一般来说,这种继承形式(增加某些方法的可见性是唯一的更改)是否是众所周知的做法,并且在某些情况下它可能有用(假设我们可以访问所有代码)?

4
从ViewModel观察LiveData
我有一个单独的类,负责处理数据提取(特别是Firebase),通常从中返回LiveData对象并异步更新它们。现在,我想将返回的数据存储在ViewModel中,但是问题是,为了获取所述值,我需要观察从数据获取类返回的LiveData对象。观察方法要求将LifecycleOwner对象作为第一个参数,但是我显然不在ViewModel中拥有该对象,并且我知道我不应该在ViewModel中保留对Activity / Fragment的引用。我该怎么办?



4
分页库-具有API的页面和大小的网络+数据库的边界回调
简短问题: 使用使用页面+大小加载新页面和BoundaryCallback类的API,从Architecture组件处理分页库上数据库+网络的正确方法是什么? 研究与解释 当前,BoundaryCallback分页库中用于体系结构组件的类将列表中某个元素的实例作为参数接收,而没有该元素所在位置的实际上下文。它发生在onItemAtFrontLoaded和中onItemAtEndLoaded。 我的Api应该接收该页面和页面大小以加载下一个数据块。作为分页列表构建器的一部分添加的边界回调应根据预取距离和页面大小告诉您何时加载下一页数据。 由于API需要的页码和页面提供的尺寸,我没有看到一个方法只是通过接收从列表中提供的要素之一发送到APIonItemAtFrontLoaded和onItemAtEndLoaded。检查此链接中的google示例,它们使用最后一个元素的名称来获取下一个元素,但这不适合页面+大小的Api。 他们还提供了另一个示例,其中仅使用的网络PagedKeyedDatasource,但是没有有关如何将其与数据库和BoundaryCallback混合使用的示例或线索。 编辑:到目前为止,我发现的唯一解决方案是将最后加载的页面存储在共享首选项上,但这听起来像是一个肮脏的把戏。 请参阅 https://github.com/googlesamples/android-architecture-components/issues/252#issuecomment-392119468以获得官方信息。

3
Kotlin Flow与Android LiveData
我对Kotlin Flow有一些疑问 我可以从多个片段观察LiveData。我可以用Flow做到这一点吗?如果是,那怎么办? 我们可以使用map&从单个LiveData获得多个LiveData switchMap。有没有办法从一个源流获得多个流? 使用,MutableLiveData我可以使用变量引用从任何地方更新数据。有什么办法可以对Flow进行同样的操作? 我有一个用例这样的:我会观察SharedPreferences使用callbackFlow{...},这将给我一个单一源流。从该流中,我想为每个键值对创建多个流。 这些听起来很愚蠢。我是Rx and Flow世界的新手。

2
使用viewLifecycleOwner作为LifecycleOwner
我有一个片段: class MyFragment : BaseFragment() { // my StudentsViewModel instance lateinit var viewModel: StudentsViewModel override fun onCreateView(...){ ... } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) viewModel = ViewModelProviders.of(this).get(StudentsViewModel::class.java) updateStudentList() } fun updateStudentList() { // Compiler error on 'this': Use viewLifecycleOwner as the LifecycleOwner viewModel.students.observe(this, Observer { //TODO: …

2
Kotlin Flow与LiveData
在上一个Google I / O中,Jose Alcerreca和Yigit Boyar 告诉我们,我们不再应该使用LiveData来获取数据。现在,我们应该将暂停功能用于一次抓取,并使用Kotlin的Flow创建数据流。我同意协程对于单次获取或其他CRUD操作(例如插入等)非常有用。但是,在需要数据流的情况下,我不了解Flow给我带来什么好处。在我看来,LiveData也在这样做。 流示例: 视图模型 val items = repository.fetchItems().asLiveData() 资料库 fun fetchItems() = itemDao.getItems() 道 @Query("SELECT * FROM item") fun getItems(): Flow<List<Item>> LiveData示例: 视图模型 val items = repository.fetchItems() 资料库 fun fetchItems() = itemDao.getItems() 道 @Query("SELECT * FROM item") fun getItems(): LiveData<List<Item>> 我还希望看到一些使用协程和Flow与Room或Retrofit协同工作的项目示例。我只找到了一个Google的ToDo示例,其中协程用于一次获取,然后在更改时手动重新获取数据。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.