android - 如何为 ViewPager 中的每个页面创建 ViewModel?

标签 android android-architecture-components android-architecture-lifecycle

我有一个ViewPager ,我在其中显示 PetFragment 的多个实例。创建 PetFragment 的新实例,我调用PetFragment.newInstance(petId) .

我想要一个单独的ViewModel每个 petId 的实例。但是 ViewModelProvider.Factory#create() 只需要 Class<T>作为参数。我如何实现这一目标?

最佳答案

看看ViewModelProvider.get(@NonNull String key, @NonNull Class<T> modelClass) ,您应该能够为通过键存储的特定类拥有多个 ViewModel。

ViewModelProvider.get(@NonNull Class<T> modelClass)只需使用默认键调用第一个方法。

get 调用与 ViewModelStore 交互这是 HashMap<String, ViewModel> 的包装器,这应该允许您存储各种 ViewModel对于相同类型的 Fragment,只要每个 Fragment 都有一个唯一的键来标识它应该显示的内容。

关于android - 如何为 ViewPager 中的每个页面创建 ViewModel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48695438/

相关文章:

android - 连接 ROOM 数据库中的表

安卓机房 : Insert relation entities using Room

android - Google Drive Api 在发布应用程序后停止工作

android - 在 React-Native 中激活调试时卡在黑屏上

android - 更改RecyclerView所选项目的背景

android - 房间尝试重新打开已经关闭的数据库

Android Logcat 垃圾邮件很多

android - 如何在扩展 LifecycleActivity 的 View 中设置SupportActionBar

Android LiveData - 第二次更新时不会触发 switchMap

android - 无法在 Android 架构组件 1.1.1 : 中找到类 DiffCallback