首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >分页库3加载状态无法工作

分页库3加载状态无法工作
EN

Stack Overflow用户
提问于 2022-09-05 16:29:27
回答 1查看 127关注 0票数 0

我有一个应用程序,可以从moviedb api中获取电影,我使用分页库3对数据进行分页,我已经设置了所有内容,数据正在正确显示,唯一在加载状态下不工作的东西,在阅读了更多关于加载状态适配器的内容后,我才知道它只在使用远程中介器从db获取数据时才能工作,我可能错了,请有人纠正我,我很感谢您的帮助。

  • Code

代码语言:javascript
复制
  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类

代码语言:javascript
复制
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
    }
    

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-06 07:16:41

我还配置页脚加载状态适配器与您的代码相同,没有任何问题。嗯,你可以在打电话给executePendingBindings()后再打给holder.binding.progressBar.isVisible = loadState is LoadState.Loading。这是onBindViewHolder() func:override fun onBindViewHolder(holder: ViewHolder, loadState: LoadState) { holder.binding.progressBar.isVisible = loadState is LoadState.Loading executePendingBindings() }

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73612302

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档