viewholder recyclerview make how dependency create card and android adapter android-recyclerview

android - make - Eliminar todos los elementos de RecyclerView



recyclerview dependency (12)

Esto funciona muy bien para mí:

public void clear() { final int size = data.size(); if (size > 0) { for (int i = 0; i < size; i++) { data.remove(0); } notifyItemRangeRemoved(0, size); } }

Fuente: https://github.com/mikepenz/LollipopShowcase/blob/master/app/src/main/java/com/mikepenz/lollipopshowcase/adapter/ApplicationAdapter.java

o:

public void clear() { final int size = data.size(); data.clear(); notifyItemRangeRemoved(0, size); }

Para ti:

@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(); }

Estoy intentando eliminar todos los elementos de mi RecyclerView en mi método onRestart para que los elementos no se carguen dos veces:

@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(); }

Pero por alguna razón, el método de delete que creé en el adapter no funciona correctamente:

en RecyclerAdapter.java:

public void delete(int position){ myList.remove(position); notifyItemRemoved(position); } public int getSize(){ return myList.size(); }

Creo que todos los demás elementos de mi lista se eliminan en lugar de toda la lista.

Con una vista de lista fue tan fácil y simplemente llamé adapter.clear() .

¿Puede alguien ayudarme a arreglar el código?

Creo que debería estar utilizando notifyItemRangeRemoved(...,...); Pero no estoy seguro de cómo. TIA


Así es como borré mi recyclerview y le agregué nuevos elementos con animación:

mList.clear(); mAdapter.notifyDataSetChanged(); mSwipeRefreshLayout.setRefreshing(false); //reset adapter with empty array list (it did the trick animation) mAdapter = new MyAdapter(context, mList); recyclerView.setAdapter(mAdapter); mList.addAll(newList); mAdapter.notifyDataSetChanged();


En Xamarin.Android, funciona para mí y necesita cambiar el diseño

var layout = recyclerView.GetLayoutManager() as GridLayoutManager; layout.SpanCount = GetItemPerRow(Context); recyclerView.SetAdapter(null); recyclerView.SetAdapter(adapter);//reset


Evite eliminar sus elementos en un bucle for y llamar a notifyDataSetChanged en cada iteración. En su lugar, simplemente llame al método clear en su lista myList.clear(); y luego notifique a su adaptador

public void clearData() { myList.clear(); //clear list mAdapter.notifyDataSetChanged(); //let your adapter know about the changes and reload view. }


Otra forma de borrar los elementos de reciclaje es crear una instancia de un nuevo adaptador vacío.

mRecyclerView.setAdapter(new MyAdapter(this, new ArrayList<MyDataSet>()));

Probablemente no sea la solución más optimizada, pero funciona a la perfección.


Para mi caso, agregar una lista vacía hizo el trabajo.

List<Object> data = new ArrayList<>(); adapter.setData(data); adapter.notifyDataSetChanged();


ListView utiliza clear() .

Pero, si solo lo estás haciendo para RecyclerView . Primero tienes que borrar tu RecyclerView.Adapter con notifyItemRangeRemoved(0,size)

Entonces, solo recyclerView.removeAllViewsInLayout() .


Ayudar a sí mismo:

public void clearAdapter() { arrayNull.clear(); notifyDataSetChanged(); }


private void clearRecyclerView(){ CustomListViewValuesArr.clear(); customRecyclerViewAdapter.notifyDataSetChanged(); }

usa esta func


public void clearData() { mylist.removeAll(mylist); mAdapter.notifyDataSetChanged(); recyclerView.setAdapter(mAdapter); }


recyclerView.removeAllViewsInLayout();

La línea anterior le ayudará a eliminar todas las vistas del diseño.

Para ti:

@Override protected void onRestart() { super.onRestart(); recyclerView.removeAllViewsInLayout();//removes all the views //then reload the data PostCall doPostCall = new PostCall(); //my AsyncTask... doPostCall.execute(); }


setAdapter(null);

Útil si RecycleView tiene diferentes vistas.