Подтвердить что ты не робот

Как удалить список всех элементов

В моем приложении, если вы нажмете на кнопку, я хочу удалить все элементы списка. Здесь я использую базовый адаптер для добавления элементов в представление списка.

Как я могу удалить элементы listview динамически.

4b9b3361

Ответ 1

Вызвать setListAdapter() снова. На этот раз с пустым ArrayList.

Ответ 2

ListView работает на основе базовых данных в Adapter. Чтобы очистить ListView, вам нужно сделать две вещи:

  • Очистите данные, которые вы установили из адаптера.
  • Обновить представление, вызвав notifyDataSetChanged

Например, см. скелет SampleAdapter ниже, который расширяет 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;
    }
}

Здесь у вас есть ArrayList<String> data как данные для вашего адаптера. Хотя вам может не понадобиться использовать ArrayList, у вас будет что-то похожее в вашем коде для представления данных в вашем ListView

Далее вы предоставляете метод очистки этих данных, реализация этого метода заключается в очистке базовой структуры данных


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

Если вы используете любой подкласс Collection, у них будет clear(), который вы могли бы использовать, как указано выше.

Как только у вас есть этот метод, вы должны называть clearData и notifyDataSetChanged на onClick, поэтому код для onClick будет выглядеть примерно так:


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

// refresh the View
sampleAdapter.notifyDataSetChanged();

Ответ 3

если вы использовали объект List и передали его на адаптер, вы можете удалить значение из объекта List и вызвать объект-атрибут notifyDataSetChanged() с помощью объекта-адаптера.

например.

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

для удаления выполните этот путь

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

или без объекта списка удалить элемент из списка.

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

Ответ 4

Вы можете использовать только

 lv.setAdapter(null);

Ответ 5

Я использовал это утверждение, и это сработало для меня:

   setListAdapter(null)

Этот вызов вызывает конструктор по умолчанию, который ничего не делает в классе, расширяет BaseAdapter.

Ответ 6

Я просто очищаю arraylist, попробую 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

Извлеките данные из adapter и вызовите adapter.notifyDataSetChanged();

Ответ 8

используйте любой из следующих вариантов, который соответствует вашим требованиям.

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

или

listview.removeViewInLayout(your view);