Я новичок в использовании MVVM и архитектуры Android, и я немного смущен.
скажем, например, я хочу создать такое приложение, как Youtube, поскольку вы знаете, что у YouTube есть эти вкладки в нижней части навигации: Главная, Подписка, Тенденции (исследовать)
эти 3 вкладки будут отображать повторный просмотр элементов (видеообъект), эти 3 будут отображать данные из 3 разных запросов.
в MVVM с использованием модели просмотра и живых данных поток данных будет таким
фрагмент ‹- viewModel‹ - репозиторий ‹- клиент
так что для этих трех вкладок у меня будет 3 разных фрагмента, а это также означает, что у меня будет 3 разных viewModels. теперь я не уверен, сколько репозиториев и сетевых клиентов мне нужно иметь
я прав, если у меня только 1 репозиторий и 1 сетевой клиент? сколько репозиториев и клиентов мне нужно иметь?
каждая viewModel будет извлекать liveData из этого VideoRepository
кода ниже, и в конечном итоге каждый фрагмент будет наблюдать данные из каждой 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
получит LiveData из этого VideoRetrofitClient
, как этот код
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 в порядке