android - 关于Room和Paging Library的一些问题

标签 android mvvm android-room android-architecture-components

我正在尝试使用 Room Persistance Library 设置我的所有列表和 Paging Library但是我在实现 PagedListAdapter 时遇到了一些问题。

问题一

我不想在 onBindViewHolder 中编写任何 ifwhen... 条件,因此滚动是完全流畅的。我有一个模型及其属性。例如,我想根据 Boolean 设置布局内的 view 的可见性(如 TextView)模型,但我不想使用 if。实现该目标的正确方法是什么?

我应该在具有 View.VISIBLEView.GONE 的模型中创建一个 Int 属性吗?但是随后模型会变得非常复杂,包含大量属性,并且所有属性都在 Room 数据库的所有模型对象上。

我是否应该创建另一个仅具有适配器 UI 所需属性的模型?但是每次修改真实模型时,我也必须修改适配器模型才能在 UI 上看到变化。我认为这一点也不好。

您知道在 PagedListAdapter 中是否可以在某个地方异步执行此操作吗?

问题二

我需要使用像 getString(R.string.resource) 这样的函数,它需要一个 context。我还需要使用 Glide 将图像加载到 ImageView 中,但它需要 Activity 上下文Fragment 上下文。我试图用 Dagger 注入(inject)它,但那是不可能的。通过构造函数传递该上下文是安全的吗?或者最好的方法是什么? (我想同样的问题发生在实现RecyclerViewAdapter)

最佳答案

  1. 在我研究过的应用程序中,我有一个保存当前播放器状态的表。我在多选查询中使用该表,因此当我更改该表时,Paging library 将更改我的数据源。 Example app .
  2. 我使用 View 实例中的 Context 实例和方法 View.getContext()

关于android - 关于Room和Paging Library的一些问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46919004/

相关文章:

android - Intellij Idea 14.1 中失去了对 Kotlin 的支持

android - 在 Android 上部分选中复选框?

entity-framework - MVVM - 业务层在哪里映射?

android - 添加 Room 编译器后找不到 GlideApp

android - 带 RxJava2 的房间 -(可流动、可能、存储库模式)

java - Android手机导航-NavController Action类未生成

java - 如何根据实际方向使用不同的 fragment ?

EXTJS 5 - ViewModel 获取 Store 返回空值

android - 将位置绑定(bind)到 MVVM 中的 MapView

android - Room、Kotlin、Dagger 2.15 android.app.Application 不能在没有@Inject 构造函数或@Provides 注释方法的情况下提供