在我的应用程序中,如果您单击一个按钮,则我希望删除所有的listview项目。
在这里,我使用基本适配器将项目添加到列表视图中。
如何动态删除listview项目。
再次调用 setListAdapter() 。 这次使用一个空的ArrayList。
ListView
是基于 Adapter
中的底层数据运作的。要清除 ListView
,您需要完成两件事:
notifyDataSetChanged
来刷新视图。例如,请参见扩展了 BaseAdapter
的 SampleAdapter
的框架:
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() 方法,你可以像上面那样使用该方法。
一旦你获得了这个方法,你想在你的 onClick
中调用 clearData
和 notifyDataSetChanged
,因此 onClick
的代码将会是这样的:
// listView is your instance of your ListView
SampleAdapter sampleAdapter = (SampleAdapter)listView.getAdapter();
sampleAdapter.clearData();
// refresh the View
sampleAdapter.notifyDataSetChanged();
如果您使用了List对象并将其传递给Adapter,则可以从List对象中删除该值,然后使用adapter对象调用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();
lv.setAdapter(null);
listView.setAdapter(null);
我使用了这个语句,它对我有用:
setListAdapter(null)
在一个继承自BaseAdapter的类中,这个调用了一个什么都不做的默认构造函数。
我刚刚清空了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);
List<ModelData> dataLists = new ArrayList<>();
RaporAdapter adapter = new RaporAdapter(AyrintiliRapor.this, dataLists);
listview.setAdapter(adapter);
或者根据需要将可见性设置为Gone / Invisible
img_pdf.setVisibility(View.INVISIBLE);
对我来说,这是可行的方法:
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);
listview.removeViews(1,listview.getChildCount());
或者
listview.removeViewInLayout(your view);