分页库3加载状态不工作



我有一个从moviedbapi获取电影的应用程序,我使用分页库3来分页数据,我已经设置好了所有内容,数据显示正确,唯一在加载状态下不起作用的是,在阅读了更多关于加载状态适配器的信息后,我知道它只在使用远程中介器后从db获取数据时起作用,我可能错了,请有人纠正我,如果有任何帮助,我将不胜感激。。

  • 代码
val layoutManager = LinearLayoutManager(this)
binding.recyclerView.layoutManager  = layoutManager
binding.recyclerView.setHasFixedSize(true)
movieAdapter = TrendingMovieAdapter(object : MovieListener{
override fun onMovieSelected(movieId: Int) {
Intent(this@MainActivity,DetailsActivity::class.java).apply {
putExtra("id",movieId)
startActivity(this)
}
}
})
binding.recyclerView.adapter = movieAdapter.withLoadStateHeaderAndFooter(
footer = LoaderAdapter(),
header = LoaderAdapter()
)

lifecycleScope.launch {
movieViewModel.getPagedTrendingMovies().collectLatest {
movieAdapter.submitData(it)
}
}
  • LoadStatesAdapter类
class LoaderAdapter : LoadStateAdapter<LoaderAdapter.ViewHolder>() {
inner class ViewHolder(var binding : LoaderItemBinding) : RecyclerView.ViewHolder(binding.root)

override fun onCreateViewHolder(parent: ViewGroup, loadState: LoadState): ViewHolder {
return ViewHolder(
DataBindingUtil.inflate(LayoutInflater.from(parent.context),
R.layout.loader_item,parent,false)
)
}
override fun onBindViewHolder(holder: ViewHolder, loadState: LoadState) {
holder.binding.progressBar.isVisible = loadState is LoadState.Loading
}

}

我还配置了页脚加载状态适配器,与您的代码相同,没有任何错误。嗯,你可以试着在呼叫holder.binding.progressBar.isVisible = loadState is LoadState.Loading之后再呼叫executePendingBindings()。这是onBindViewHolder()函数:override fun onBindViewHolder(holder: ViewHolder, loadState: LoadState) { holder.binding.progressBar.isVisible = loadState is LoadState.Loading executePendingBindings() }

最新更新