【发布时间】:2020-11-11 04:04:34
【问题描述】:
我从不同的端点、不同的存储库获取所有类别。那是给我所有的类别。现在我想循环运行这些类别并编写观察者来获取每个类别的所有项目。 换一种说法 - 我想一一获取所有类别的 FeedItems,因为我必须为每个类别触发单独的端点。我有所有类别的列表。
我可以通过编写下面的代码来获取单个类别的项目,但不知道如何获取多个。
在 viewModal 中,我正在为单个类别观察者执行以下代码
val categoryByIdItems: LiveData<Resource<List<FeedItem>>> = Transformations
.switchMap(categoryByIdParam) { input ->
input.ifExists { catId, shouldFetch ->
feedRepository.loadCategoryByIdFeed(catId.toString(), shouldFetch)
}
}
如果我使用上面的代码,它会通过调用加载函数给我一个类别的 feedItems
fun load(categories:List<Category>,shouldFetch:Boolean = false){
setCategoryByIdRequest(categories[0].id, shouldFetch)
}
我想根据类别在循环中运行 setCategoryByIdRequest,我可以做到。 我正在使用此代码获取片段文件中的第一类项目
viewModel.categoryByIdItems.observe(this, Observer { resource ->
})
如果我为viewModel.categoryByIdItems.observe 运行循环而不是布局添加片段但由于相同的观察者所有都是相同的。
但我不确定如何在片段中观察到循环中的 categoryByIdItems。 作为 categoryByIdItems,我首先在视图模式中定义并在片段中使用它,但我希望根据类别数量进行动态处理。
对不起我的写作,因为我不知道如何解释更多来告诉你我想要什么。我是 LiveData 和转换的新手。 我没有使用 DB,使用 apis 来获取数据。如果您想找到更多关于存储库、查看模式或片段的代码,请告诉我,我会为您提供。
【问题讨论】:
标签: android kotlin repository android-livedata observers