Remove all items from RecyclerView
Solution 1
This works great for me:
public void clear() {
int size = data.size();
if (size > 0) {
for (int i = 0; i < size; i++) {
data.remove(0);
}
notifyItemRangeRemoved(0, size);
}
}
or:
public void clear() {
int size = data.size();
data.clear();
notifyItemRangeRemoved(0, size);
}
For you:
@Override
protected void onRestart() {
super.onRestart();
// first clear the recycler view so items are not populated twice
recyclerAdapter.clear();
// then reload the data
PostCall doPostCall = new PostCall(); // my AsyncTask...
doPostCall.execute();
}
Solution 2
Avoid deleting your items in a for loop and calling notifyDataSetChanged in every iteration. Instead just call the clear method in your list myList.clear();
and then notify your adapter
public void clearData() {
myList.clear(); // clear list
mAdapter.notifyDataSetChanged(); // let your adapter know about the changes and reload view.
}
Solution 3
setAdapter(null);
Useful if RecycleView have different views type
Solution 4
recyclerView.removeAllViewsInLayout();
The above line would help you remove all views from the layout.
For you:
@Override
protected void onRestart() {
super.onRestart();
recyclerView.removeAllViewsInLayout(); //removes all the views
//then reload the data
PostCall doPostCall = new PostCall(); //my AsyncTask...
doPostCall.execute();
}
Solution 5
Help yourself:
public void clearAdapter() {
arrayNull.clear();
notifyDataSetChanged();
}
user2456977
Updated on May 21, 2021Comments
-
user2456977 about 3 years
I am trying to remove all the elements from my
RecyclerView
in myonRestart
method so the items don't get loaded twice:@Override protected void onRestart() { super.onRestart(); // first clear the recycler view so items are not populated twice for (int i = 0; i < recyclerAdapter.getSize(); i++) { recyclerAdapter.delete(i); } // then reload the data PostCall doPostCall = new PostCall(); // my AsyncTask... doPostCall.execute(); }
But for some reason the
delete
method I created in theadapter
is not functioning properly:in RecyclerAdapter.java:
public void delete(int position){ myList.remove(position); notifyItemRemoved(position); } public int getSize(){ return myList.size(); }
I think every other item in my list gets deleted instead of the entire list.
With a
listview
it was so easy and I simply calledadapter.clear()
.Can someone please help me fix up the code?
I think I should be using
notifyItemRangeRemoved(...,...);
but I am not sure how. TIA