Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


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

  • Insertar una marca de tiempo en la base de datos a través de ContentValues
  • Pantalla de bienvenida animada con Phonegap
  • Desaparición de los botones de la barra de acción al pasar entre fragmentos
  • Modifique los recursos de la aplicación utilizando la API de archivo de Phonegap
  • SVG vs PNG en Android
  • Android traducir animación - mover permanentemente Ver a nueva posición usando AnimationListener
  • 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.

  • El emulador de Visual Studio para Android está atascado en "OS is starting ...", sólo en API Level 23 / Android 6
  • Registro de SMS como en la aplicación para móviles: whatsapp
  • Lollipop CalenderView DatePicker no llama al método OnDateChanged ()
  • ¿Cómo lidiar con la eliminación de un permiso para un receptor de difusión en Android M?
  • BubblePopupHelper que llena el registro de depuración de Android
  • Eliminación del relleno adicional en un GridView en android
  • 11 Solutions collect form web for “Eliminar elementos ListView en Android”

    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); 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.