Пейджер не показывает правильные данные для определенных запросов ⇐ Android
-
Anonymous
Пейджер не показывает правильные данные для определенных запросов
Я создаю вики-фильм с использованием API TMDB и пытаюсь реализовать функцию поиска.
Проблема в том, что когда я нажимаю «Написать запрос» и нажимаю «Поиск», данные извлекаются из API, но не отображаются. Здесь все усложняется: некоторые запросы, такие как west или bank, получают данные и отображаются, но для некоторых других запросов, таких как love или аниме... оно извлекается из API, но не отображается, и мне это кажется странным????
Модель просмотра:
класс SearchBarViewModel @Inject конструктор( частный val pagingRepository: PagingRepository ) : ViewModel() { частный val _query = MutableStateFlow("") вал запрос = _query.asStateFlow() частный val _searchedMoviesList: MutableStateFlow = MutableStateFlow( ПейджингДанные.пустой() ) val searchedMoviesList = _searchedMoviesList.asStateFlow() весело onSearch (запрос: String) { если (query.isEmpty()||query.isBlank()){ возвращаться } если (query.trim() == LastSearchedQuery) { возвращаться } viewModelScope.launch { _searchedMoviesList.value = PagingData.empty() pagingRepository.searchMovies(coroutineScope = viewModelScope,query = query).collectLatest{ _searchedMoviesList.value = это LastSearchedQuery = query.trim() } } } Пейджингрепо:
класс PagingRepositoryImpl @Inject конструктор( Частный доступ к MoviesApi: MoviesApi ) : Репозиторий Пейджинга { ////// переопределить fun searchMovies(coroutineScope: CoroutineScope,query: String): Flow { val pagingSourceFactory = { SearchMoviesSource(moviesApi,query) } вернуть пейджер( конфигурация = PagingConfig(20), pagingSourceFactory = pagingSourceFactory ).flow.cachedIn(coroutineScope) } } MoviesApi:
интерфейс MoviesApi { @Headers("////") @GET("поиск/фильм") приостановить веселый поиск фильмов( Запрос @Query("query"): строка, @Query("include_adult") AdultContent: Boolean = false, Страница @Query("page"):Int ):MovieListResponse } Интерфейс:
val searchedMovies =searchBarViewModel.searchedMoviesList.collectAsLazyPagingItems() МойSearchBar( onSearch = {searchedQuery-> searchBarViewModel.onSearch(searchedQuery) }, список = если (searchedMovies.itemCount == 0) topRatedMovies еще searchedMovies, ) кто-нибудь знает, что является причиной этого?
Я создаю вики-фильм с использованием API TMDB и пытаюсь реализовать функцию поиска.
Проблема в том, что когда я нажимаю «Написать запрос» и нажимаю «Поиск», данные извлекаются из API, но не отображаются. Здесь все усложняется: некоторые запросы, такие как west или bank, получают данные и отображаются, но для некоторых других запросов, таких как love или аниме... оно извлекается из API, но не отображается, и мне это кажется странным????
Модель просмотра:
класс SearchBarViewModel @Inject конструктор( частный val pagingRepository: PagingRepository ) : ViewModel() { частный val _query = MutableStateFlow("") вал запрос = _query.asStateFlow() частный val _searchedMoviesList: MutableStateFlow = MutableStateFlow( ПейджингДанные.пустой() ) val searchedMoviesList = _searchedMoviesList.asStateFlow() весело onSearch (запрос: String) { если (query.isEmpty()||query.isBlank()){ возвращаться } если (query.trim() == LastSearchedQuery) { возвращаться } viewModelScope.launch { _searchedMoviesList.value = PagingData.empty() pagingRepository.searchMovies(coroutineScope = viewModelScope,query = query).collectLatest{ _searchedMoviesList.value = это LastSearchedQuery = query.trim() } } } Пейджингрепо:
класс PagingRepositoryImpl @Inject конструктор( Частный доступ к MoviesApi: MoviesApi ) : Репозиторий Пейджинга { ////// переопределить fun searchMovies(coroutineScope: CoroutineScope,query: String): Flow { val pagingSourceFactory = { SearchMoviesSource(moviesApi,query) } вернуть пейджер( конфигурация = PagingConfig(20), pagingSourceFactory = pagingSourceFactory ).flow.cachedIn(coroutineScope) } } MoviesApi:
интерфейс MoviesApi { @Headers("////") @GET("поиск/фильм") приостановить веселый поиск фильмов( Запрос @Query("query"): строка, @Query("include_adult") AdultContent: Boolean = false, Страница @Query("page"):Int ):MovieListResponse } Интерфейс:
val searchedMovies =searchBarViewModel.searchedMoviesList.collectAsLazyPagingItems() МойSearchBar( onSearch = {searchedQuery-> searchBarViewModel.onSearch(searchedQuery) }, список = если (searchedMovies.itemCount == 0) topRatedMovies еще searchedMovies, ) кто-нибудь знает, что является причиной этого?
Мобильная версия