如何使用Paging 3库在回收者视图中显示数据

问题描述

我正在使用Paging 3库,并且正在从数据源的load方法内部的网络中获取正确的数据。

但是以某种方式,数据不会发送回活动和回收站视图,而我得到的只是空的回收站视图。

我的代码在做什么错?

数据源

override suspend fun load(params: LoadParams<Int>): LoadResult<Int,Movie> {
    val position = params.key ?: MOVIES_STARTING_PAGE_INDEX
    val response =
        movieService.apiService.getAllMovies(Constants.API_KEY,position)
    val movies = response.movies
    
    return LoadResult.Page(
        //Todo: !!!!! REMOVE THE "!!" MARK AND SET IT TO EMPTY LIST IN THE MODEL
        data = movies!!,prevKey = if (position == MOVIES_STARTING_PAGE_INDEX) null else position - 1,nextKey = if (movies.isEmpty()) null else position + 1
    )


}

存储库

fun getMoviesResultsstream(): Flow<PagingData<Movie>> {
    return Pager(
        config = PagingConfig(
            pageSize = NETWORK_PAGE_SIZE
        ),pagingSourceFactory = { MoviePagingSource(movieService) }
    ).flow
}

查看模型

   fun searchMovies(): Flow<PagingData<Movie>> {
        return repo.getMoviesResultsstream()
            .cachedIn(viewmodelScope)
    }

活动

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    viewmodel = viewmodelProvider(this,Injection.provideviewmodelFactory())
        .get(Dummyviewmodel::class.java)
    
    movies_recycler_view?.apply {
        context?.let {
            layoutManager = linearlayoutmanager(it)
            movieAdapter = DummyAdapter()
            adapter = movieAdapter
        }

    }        
    
    lifecycleScope.launch {
        viewmodel.searchMovies().collectLatest {
            movieAdapter.submitData(it)
        }
    }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)