How to clear the views which are held in the ListView's RecycleBin?

后端 未结 5 1254
梦如初夏
梦如初夏 2020-12-03 17:23

In Android\'s ListView widget, the ListView will hold the views which is got from getView method of an Adapter in a inner class

5条回答
  •  情书的邮戳
    2020-12-03 17:57

    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 );
    

提交回复
热议问题