2011-09-13 15 views
30

En mi aplicación, si hace clic en un botón, entonces quiero eliminar todos los elementos de la lista. Aquí, estoy usando el adaptador base para agregar los elementos a la vista de lista.Cómo eliminar la lista vista de todos los elementos

¿Cómo puedo eliminar dinámicamente los elementos de la lista?

+1

dinámicamente pasar getCount, para borrar pasar cero como getCount – Abhi

+7

listview.setAdapter (null); –

+0

Gracias Abhi, eso realmente ayudó. Anulando el método getCount .... – slodeveloper

Respuesta

32

llamada setListAdapter() nuevo. Esta vez con una ArrayList vacía.

+1

aquí estoy usando baseadapter – naresh

+1

Aquí, si hace clic en el botón, se eliminará el elemento de la vista de la lista de datos anterior después de que los nuevos elementos se agregarán a la vista de la lista. es posible con esto? – naresh

+0

Sí, puede llamar a setListAdaptor() con nuevos datos según sea necesario. – mah

0

eliminar los datos de la adapter y llamar adapter.notifyDataSetChanged();

+0

cómo eliminar los datos del adaptador? – naresh

+0

al declarar el adaptador, usted hubiera pasado los valores de alguna forma ... elimine el valor de allí ... –

+0

Esa es la pregunta. Cómo eliminar los elementos del adaptador. – JaydeepW

9

si usó el objeto List y lo pasó al adaptador, puede eliminar el valor del objeto List y llamar al objeto notifyDataDataSetChanged() mediante el adaptador.

por ej.

List<String> list = new ArrayList<String>(); 
ArrayAdapter adapter; 


adapter = new ArrayAdapter<String>(DeleteManyTask.this, 
      android.R.layout.simple_list_item_1, 
      (String[])list.toArray(new String[0])); 

listview = (ListView) findViewById(R.id.list); 
listview.setAdapter(adapter); 

listview.setAdapter(listAdapter); 

para quitar lo hacen de esta manera

list.remove(index); //or 
list.clear(); 
adpater.notifyDataSetChanged(); 

o sin lista de objetos Quitar elemento de la lista.

adapter.clear(); 
adpater.notifyDataSetChanged(); 
+0

estoy usando el adaptador de base. entonces no tengo claro() metodo. cómo quitarlo? – naresh

+0

¿me puedes decir el código con la edición de tu pregunta? – Pratik

0

utilizar cualquiera de las opciones de fuelle, que se adapte a sus requerimientos

listview.removeViews(1,listview.getChildCount()); 

o

listview.removeViewInLayout(your view); 
20

ListView funciona basándose en los datos subyacentes en el Adapter. Con el fin de despejar el ListView que tiene que hacer dos cosas:

  1. borrar los datos que el aparato del adaptador.
  2. actualizar la vista llamando notifyDataSetChanged

Por ejemplo, ver el esqueleto de SampleAdapter a continuación que extiende el BaseAdapter


public class SampleAdapter extends BaseAdapter { 

    ArrayList<String> data; 

    public SampleAdapter() { 
     this.data = new ArrayList<String>(); 
    } 

    public int getCount() { 
     return data.size(); 
    } 

    public Object getItem(int position) { 
     return data.get(position); 
    } 

    public long getItemId(int position) { 
     return position; 
    } 

    public View getView(int position, View convertView, ViewGroup parent) { 
     // your View 
     return null; 
    } 
} 

Aquí tienes la ArrayList<String> data como los datos para su adaptador. Si bien es posible que no sea necesario utilizar ArrayList, tendrá algo similar en el código para representar los datos en su ListView

A continuación, proporcione un método para borrar estos datos, la implementación de este método es borrar la estructura de datos subyacente


public void clearData() { 
    // clear the data 
    data.clear(); 
} 

Si usted está usando alguna subclase de Collection, tendrán clear() método que se puede utilizar como anteriormente.

Una vez que tenga este método, al que desea llamar clearData y notifyDataSetChanged en su onClick por lo tanto el código para onClick se verá algo como:


// listView is your instance of your ListView 
SampleAdapter sampleAdapter = (SampleAdapter)listView.getAdapter(); 
sampleAdapter.clearData(); 

// refresh the View 
sampleAdapter.notifyDataSetChanged(); 
4

utilicé esta declaración y que trabajó para mí:

setListAdapter(null) 

Este llama a un constructor predeterminado que no hace nada en una clase extiende BaseAdapter.

+1

esto romperá Android 2.1 –

3

Acabo de limpiar el arraylist, intente values.clear();

values = new ArrayList<String>(); 
values.clear(); 

ArrayAdapter <String> adapter; 
adapter = new ArrayAdapter<String>(this, R.layout.list,android.R.id.text1, values); 
lista.setAdapter(adapter); 
7

Sólo puede utilizar

lv.setAdapter(null); 
Cuestiones relacionadas