it-swarm.it

Come rimuovere listview tutti gli elementi

Nella mia app, se fai clic su un pulsante, voglio rimuovere tutti gli elementi della visualizzazione elenco. Qui, sto usando l'adattatore di base per aggiungere gli articoli alla vista elenco.

Come posso rimuovere in modo dinamico gli elementi della visualizzazione elenco.

33
naresh

Richiama setListAdapter(). Questa volta con un ArrayList vuoto.

36
mah

ListView opera in base ai dati sottostanti in Adapter. Per cancellare ListView devi fare due cose:

  1. Cancella i dati impostati dall'adattatore.
  2. Aggiorna la vista chiamando notifyDataSetChanged

Ad esempio, vedi lo scheletro di SampleAdapter sotto che estende 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;
    }
}

Qui hai il ArrayList<String> data come dati per il tuo adattatore. Sebbene non sia necessario utilizzare ArrayList, nel codice verrà visualizzato qualcosa di simile per rappresentare i dati in ListView

Successivamente si fornisce un metodo per cancellare questi dati, l'implementazione di questo metodo è di cancellare la struttura di dati sottostante


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

Se stai usando una sottoclasse di Collection , avranno clear () metodo che potresti usare come sopra.

Una volta che hai questo metodo, vuoi chiamare clearData e notifyDataSetChanged sul tuo onClick quindi il codice per onClick sarà simile a:


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

// refresh the View
sampleAdapter.notifyDataSetChanged();
24
momo

se si utilizza l'oggetto List e si passa all'adattatore, è possibile rimuovere il valore dall'oggetto List e quindi chiamare notificationDataSetChanged () utilizzando l'oggetto adapter.

per es.

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);

per rimuovere fare in questo modo

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

o senza oggetto elenco rimuovi l'elemento dall'elenco.

adapter.clear();
adpater.notifyDataSetChanged();
10
Pratik

Puoi solo usare

 lv.setAdapter(null);
8
kksal55

Puoi farlo:

listView.setAdapter(null);
4
codingpuss

Ho usato questa affermazione e ha funzionato per me:

   setListAdapter(null)

Questo chiama un costruttore predefinito che non fa nulla in una classe che estende BaseAdapter.

4
Amt87

Pulisco semplicemente l'arraylist, provo valori.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);
3
SRD

Un altro approccio dopo aver provato le soluzioni seguenti. Quando ne hai bisogno, inizializza il tuo elenco su un nuovo elenco chiaro.

List<ModelData> dataLists = new ArrayList<>();
                RaporAdapter adapter = new RaporAdapter(AyrintiliRapor.this, dataLists);
                listview.setAdapter(adapter);

Oppure imposta la visibilità su Fine/Invisibile secondo necessità

img_pdf.setVisibility(View.INVISIBLE);
0
Sam

Rimuovi i dati da adapter e chiama adapter.notifyDataSetChanged();

0
Vineet Shukla

Per me ha funzionato in questo modo:

private ListView yourListViewName;
private List<YourClassName> yourListName;

  ...

yourListName = new ArrayList<>();
yourAdapterName = new yourAdapterName(this, R.layout.your_layout_name, yourListName);

  ...

if (yourAdapterName.getCount() > 0) {
   yourAdapterName.clear();
   yourAdapterName.notifyDataSetChanged();
}

yourAdapterName.add(new YourClassName(yourParameter1, yourParameter2, ...));
yourListViewName.setAdapter(yourAdapterName);
0
Robert Pal

utilizzare una delle seguenti opzioni che si adatta alle proprie esigenze

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

o

listview.removeViewInLayout(your view);
0
Balaji.K