简体   繁体   中英

How to reset or clear items in RecyclerView upon backstack navigation?

I have two fragments: Fragment A contains a recyclerview of 5 article items and Fragment B contains the webview of the selected article in Fragment A.

Upon going back from Fragment B to A, my items in the recyclerview in Fragment A doubled. So basically, Fragment A is now showing duplicate items which are not what I want.

I tried to override the onResume method in Fragment A like this but no luck:

override fun onResume() {
        super.onResume()

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

PS: I am using the navigation component to navigate between fragments.

As commented by @ADM, I moved my adapter setup to onViewCreated() . I found a simple fix that I just added at onCreateView() :

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

then on onViewCreated() :

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

Checking the arraylist size is necessary because I think the adding of articles into the arraylist is executed again upon back navigation

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM