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() 方法。
一旦你有了这个方法,你想在你的onClick上调用clearData和notifyDataSetChanged,因此onClick的代码看起来像:
// listView is your instance of your ListView
SampleAdapter sampleAdapter = (SampleAdapter)listView.getAdapter();
sampleAdapter.clearData();
// refresh the View
sampleAdapter.notifyDataSetChanged();