如何从Listview,Android中删除适配器

时间:2014-05-29 10:44:22

标签: android listview android-listview android-adapter simpleadapter

我使用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)未定义

请帮帮我! 谢谢!

3 个答案:

答案 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>

希望有所帮助:)