我是使用MVVM和Android架构的新手,我有点困惑。
例如说我想制作一个类似Youtube的应用,因为您知道youtube在其底部导航中具有以下标签:主页,订阅,趋势(浏览)
这3个标签将显示项目(视频对象)的recylerview,这3个标签将显示3个不同查询的数据。
在使用viewmodel和livedata的MVVM中,数据流将像这样
片段<-viewModel <-存储库<-客户端
因此对于这3个选项卡,我将具有3个不同的片段,这也意味着我将具有3个不同的viewModels。现在我不确定我需要多少个存储库和网络客户端
如果我只有1个存储库和1个网络客户端,对吗?我需要多少个存储库和客户?
每个viewModel将从下面代码下面的VideoRepository
检索liveData,最终每个片段将观察每个viewModel的数据
object VideoRepository {
val homeVideos: LiveData<List<Video>> = VideoRetrofitClient.homeVideos
val subscriptionVideos: LiveData<List<Video>> = VideoRetrofitClient.subscriptionVideos
val trendingVideos: LiveData<List<Video>> = VideoRetrofitClient.trendingVideos
fun searchHomeVideos() {
VideoRetrofitClient.searchHomeVideos()
}
fun searchSubscriptionVideos() {
VideoRetrofitClient.searchHomeVideos()
}
fun searchTrendingVideos() {
VideoRetrofitClient.searchHomeVideos()
}
}
和
VideoRepository
将从该VideoRetrofitClient
中获取LiveData,如下所示:object VideoRetrofitClient {
val homeVideos = MutableLiveData<List<Video>>()
val subscriptionVideos = MutableLiveData<List<Video>>()
val trendingVideos = MutableLiveData<List<Video>>()
fun searchHomeVideos() {
// perform networking ....
homeVideos.postValue(videos)
}
fun searchSubscriptionVideos() {
// perform networking ....
subscriptionVideos.postValue(videos)
}
fun searchTrendingVideos() {
// perform networking ....
trendingVideos.postValue(videos)
}
}
java或kotlin都可以
最佳答案
首先,在查询中,您可以通过传递可以是枚举类型的参数来区分它们。那么您只能通过在参数中传递不同的类型来仅调用一个存储库方法。如果不可能,则必须在客户端中为存储库创建三个不同的查询。
关于android - 在Android MVVM中,需要多少个存储库和网络客户端来提供不同的查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60690700/