In Android's ListView
widget, the ListView
will hold the views which is got from getView
method of an Adapter in a inner class RecycleBin
.
How can I clear the views in the RecycleBin
and force the ListView
to recreate all the child views.
RecyclerView is the ViewGroup that contains the views corresponding to your data. It's a view itself, so you add RecyclerView into your layout the way you would add any other UI element. Each individual element in the list is defined by a view holder object.
Recycling of list view happens when you scroll down the screen and above list view items are hidden . They are reused to show new list view items.
Calling invalidate() or invalidateViews() did not do the trick for me (as mentioned in the correct answer). The recycled views were still stored in the ListView. I had to dig in Android source code to find a solution. I checked many methods, including the setAdapter() method of the ListView class (Android API 15) :
@Override
public void setAdapter(ListAdapter adapter) {
// ...
mRecycler.clear();
// ...
}
As you noticed, setting an adapter clears the recycler, which holds all the recycled views in a list view. You do not have to create a new adapter, setting the same adapter is enough to clear the recycled views list in the list view :
Adapter adapter = listview.getAdapter ();
// ... Modify adapter ... do anything else you need to do
// To clear the recycled views list :
listview.setAdapter ( adapter );
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With