android-fragments 如何重置或清除回收视图中的项目后栈导航?

1aaf6o9v  于 2022-11-14  发布在  Android
关注(0)|答案(1)|浏览(134)

我有两个片段:片段A包含5个文章项的循环视图,片段B包含片段A中所选文章的web视图。
从片段B回到片段A时,片段A中recyclerview中我的项目增加了一倍,所以基本上,片段A现在显示的是重复的项目,而这些项目不是我想要的。
我试图重写片段A中的onResume方法,但没有成功:

override fun onResume() {
        super.onResume()

        arrayArticles.clear()
        val articlesAdapter = TipsRecyclerAdapter(arrayArticles, this)
        binding.tipsRecyclerView.layoutManager = LinearLayoutManager(context)
        binding.tipsRecyclerView.adapter = articlesAdapter
}

PS:我正在使用导航组件在片段之间导航。

kd3sttzy

kd3sttzy1#

正如@ADM所评论的,我将我的适配器设置移到了onViewCreated()。我发现了一个简单的修复程序,我刚刚在onCreateView()中添加了这个修复程序:

if(arrayArticles.size == 0){
   arrayArticles.add(article1)
   arrayArticles.add(article2)
   ...
}
...

然后在onViewCreated()上:

super.onViewCreated(view, savedInstanceState)
val articlesAdapter = TipsRecyclerAdapter(arrayArticles, this)
binding.tipsRecyclerView.layoutManager = LinearLayoutManager(context)
binding.tipsRecyclerView.adapter = articlesAdapter

检查数组列表的大小是必要的,因为我认为将文章添加到数组列表中是在向后导航时再次执行的

相关问题