我使用SimpleAdapter和Listview的自定义行布局
SimpleAdapter adapter = new SimpleAdapter(ListOrder.this, oslist,
R.layout.list_v,
new String[] { "name","time","status" },
new int[] { R.id.tablename, R.id.timeorder, R.id.status});
list.setAdapter(adapter);
之后,我重新加载Listview的数据,我想删除旧数据。 在向Listview添加新数据之前,我不知道如何删除旧数据。
我用过
adapter.remove(adapter.getItem(i));
但有错误
对于SimpleAdapter类型
,方法remove(Object)未定义
请帮帮我! 谢谢!
答案 0 :(得分:7)
您只需设置
即可listview.setAdapter(null);
答案 1 :(得分:4)
只需修改基础列表并通知适配器。像那样:
oslist.clear();
adapter.notifyDataSetChanged();
如果你只想删除一两个:
oslist.remove(index);
adapter.notifyDataSetChanged();
答案 2 :(得分:1)
SimpleAdapter没有remove方法,所以你应该将它扩展到你自己的适配器并添加remove方法。 E.g:
private class Adapter extends SimpleAdapter {
private List<? extends Map<String, ?>> data;
public Adapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to) {
super(context, data, resource, from, to);
this.data = data;
//... place some initializing code here
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//place your code for getView here.
return super.getView(position, convertView, parent);
}
public void remove(int position) {
if (position >= 0 && data.size() < position && data.get(position) != null) {
data.remove(position);
this.notifyDataSetChanged();
}
}
}
但是如果您经常更新(删除||)数据的数组,请考虑使用具有remove()和其他方法的ArrayAdapter(即使没有您自己的扩展名)(例如:http://www.vogella.com/tutorials/AndroidListView/article.html#adapterown)。 / p>
希望有所帮助:)