如何删除listview所有项目

nar*_*esh 33 android listview adapter

在我的应用程序中,如果您单击一个按钮,那么我想删除所有列表视图项目.在这里,我使用基本适配器将项目添加到列表视图.

如何动态删除listview项目.

mah*_*mah 36

setListAdapter()再打电话.这次是一个空的ArrayList.

  • 使用新的Adapter对象调用setListAdapter()会很昂贵.只需使用clear()删除适配器中的所有项目,然后使用add()/ addAll()将新数据添加到现有Adapter对象,并调用notifyDatasetChanged(). (4认同)
  • 这帮我解决了我的错误,谢谢. (2认同)

mom*_*omo 24

ListView基于的基础数据运作Adapter.为了清除ListView你需要做两件事:

  1. 清除您从适配器设置的数据.
  2. 通过调用刷新视图 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;
    }
}
Run Code Online (Sandbox Code Playgroud)

在这里ArrayList<String> data,您可以获得适配器的数据.虽然您可能没有必要使用ArrayList,但您的代码中会有类似的东西来表示ListView中的数据

接下来,您提供了一种清除此数据的方法,此方法的实现是清除底层数据结构


public void clearData() {
    // clear the data
    data.clear();
}
Run Code Online (Sandbox Code Playgroud)

如果您正在使用Collection的任何子类,则它们将具有您可以如上所述使用的clear()方法.

一旦你有了这个方法,你想打电话clearDatanotifyDataSetChangedonClick对这样的代码onClick看起来是这样的:


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

// refresh the View
sampleAdapter.notifyDataSetChanged();
Run Code Online (Sandbox Code Playgroud)


Pra*_*tik 10

如果您使用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);
Run Code Online (Sandbox Code Playgroud)

为了删除这样做

list.remove(index); //or
list.clear();
adpater.notifyDataSetChanged();
Run Code Online (Sandbox Code Playgroud)

或没有列表对象从列表中删除项目.

adapter.clear();
adpater.notifyDataSetChanged();
Run Code Online (Sandbox Code Playgroud)


小智 8

你只能使用

 lv.setAdapter(null);
Run Code Online (Sandbox Code Playgroud)


cod*_*uss 5

你可以这样做:

listView.setAdapter(null);
Run Code Online (Sandbox Code Playgroud)