Eliminar elementos ListView en Android

¿Puede alguien por favor darme un código de ejemplo de la eliminación de todos los elementos ListView y la sustitución de nuevos elementos?

Traté de reemplazar los elementos del adaptador sin éxito. Mi código es

populateList(){ results //populated arraylist with strings ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, results); listview.setAdapter(adapter); adapter.notifyDataSetChanged(); listview.setOnItemClickListener(this); } // now populating list again repopulateList(){ results1 //populated arraylist with strings ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, results1); listview.setAdapter(adapter1); adapter1.notifyDataSetChanged(); listview.setOnItemClickListener(this); } 

Aquí el método repopulateList() agregará a los elementos ListView, pero no quitará / reemplazará todos los elementos ListView.

Usted querrá remove() el elemento de su objeto adaptador y luego ejecutar el notifyDatasetChanged() en el adaptador, cualquier ListView s (debería) reciclar y actualizar por sí mismo.

He aquí un breve ejemplo de actividad con AlertDialog :

 adapter = new MyListAdapter(this); lv = (ListView) findViewById(android.R.id.list); lv.setAdapter(adapter); lv.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> a, View v, int position, long id) { AlertDialog.Builder adb=new AlertDialog.Builder(MyActivity.this); adb.setTitle("Delete?"); adb.setMessage("Are you sure you want to delete " + position); final int positionToRemove = position; adb.setNegativeButton("Cancel", null); adb.setPositiveButton("Ok", new AlertDialog.OnClickListener() { public void onClick(DialogInterface dialog, int which) { MyDataObject.remove(positionToRemove); adapter.notifyDataSetChanged(); }}); adb.show(); } }); 

Puedes usar

 adapter.clear() 

Que quitará todo el artículo de su primer adaptador entonces usted podría fijar otro adaptador o reutilizar el adaptador y agregar los artículos al adaptador viejo. Si utiliza

 adapter.add() 

Para agregar datos a su lista no necesita llamar a notifyDataSetChanged

Creo que si u añadir el siguiente código, que funcionará

 listview.invalidateViews(); 

Para eliminar un elemento, simplemente elimine ese elemento del arraylist que pasamos al adaptador y haga listview.invalidateViews();
Esto actualizará la vista de lista

 int count = adapter.getCount(); for (int i = 0; i < count; i++) { adapter.remove(adapter.getItem(i)); } 

Luego llama a notifyDataSetChanged();

Quitarlo del adaptador y, a continuación, notificar el arrayadapter que ha cambiado conjunto de datos.

 m_adapter.remove(o); m_adapter.notifyDataSetChanged(); 
  names = db.getSites(); la = new ArrayAdapter<String>(EditSiteList.this, android.R.layout.simple_list_item_1, names); EditSiteList.this.setListAdapter(la); listview.invalidateViews(); 

Este código funciona bien para mí.

  • Debe utilizar sólo un adaptador vinculado con la lista de datos que necesita para listar
  • Cuando necesite eliminar y reemplazar todos los elementos, tiene que borrar todos los elementos de la lista de datos usando "list.clear ()" y luego agregar nuevos datos usando "list.addAll (List)"

Aquí un ejemplo:

 List<String> myList = new ArrayList<String>(); ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, myList); listview.setAdapter(adapter); listview.setOnItemClickListener(this); populateList(){ List<String> result = getDataMethods(); myList.addAll(result); adapter.notifyDataSetChanged(); } repopulateList(){ List<String> result = getDataMethods(); myList.clear(); myList.addAll(result); adapter.notifyDataSetChanged(); } 

Pruebe este código, funciona para mí.

 public class Third extends ListActivity { private ArrayAdapter<String> adapter; private List<String> liste; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_third); String[] values = new String[] { "Android", "iPhone", "WindowsMobile", "Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X", "Linux", "OS/2" }; liste = new ArrayList<String>(); Collections.addAll(liste, values); adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, liste); setListAdapter(adapter); } @Override protected void onListItemClick(ListView l, View v, int position, long id) { liste.remove(position); adapter.notifyDataSetChanged(); } } 

En primer lugar debe quitar el elemento de su lista. Posteriormente puede vaciar su adaptador y rellenarlo con una nueva lista.

 private void add(final List<Track> trackList) { MyAdapter bindingData = new MyAdapter(MyActivity.this, trackList); list = (ListView) findViewById(R.id.my_list); // TODO list.setAdapter(bindingData); // Click event for single list row list.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View view, final int position, long id) { // ShowPlacePref(places, position); AlertDialog.Builder showPlace = new AlertDialog.Builder( Favoriler.this); showPlace.setMessage("Remove from list?"); showPlace.setPositiveButton("DELETE", new OnClickListener() { public void onClick(DialogInterface dialog, int which) { trackList.remove(position); //FIRST OF ALL REMOVE ITEM FROM LIST list.setAdapter(null); // THEN EMPTY YOUR ADAPTER add(trackList); // AT LAST REFILL YOUR LISTVIEW (Recursively) } }); showPlace.setNegativeButton("CANCEL", new OnClickListener() { public void onClick(DialogInterface dialog, int which) { } }); showPlace.show(); } }); } 

Es simple. Primero debes despejar tu colección y después de lista clara como este código:

  yourCollection.clear(); setListAdapter(null); 

Puedes usar

  lv.setAdapter(null); 
  • Desplazamiento a través de ListView con algunas imágenes muy laggy
  • Android: Los elementos de ListView en ListFragment se superponen a sí mismos
  • Cómo extender AdapterView para comportarse como LinearLayout llenado dinámicamente por un adaptador
  • Cómo notificar de la actividad B a A que los datos de la lista se han cambiado?
  • Ventaja de ListFragment sobre un ListView o Fragmento normal
  • ¿Cómo mostrar un ProgressBar en una vista mientras realizas algún trabajo?
  • Cómo crear ListView multinivel en Android
  • CursorAdapter clasificación dinámica
  • ¿Cómo obtener la vista de un elemento en listview en android?
  • Cómo hacer un fragmento desplazable con un ListView
  • Cómo actualizar un CursorAdapter vinculado a listview cuando el número de elementos cambia?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.