您的位置:首页 > 其它

安卓中使用ArrayAdapter中的remove方法注意事项

2016-09-25 09:44 429 查看
我们可以使用ArrayAdapter实现简单的文本数据的展示等,同时ArrayAdapter也实现了remove方法,方便我们删除listview中的某一项数据,但在进行删除操作的时候可能会遇到些许问题,如当我们在ArrayAdapter的构造方法中传入数组类型的数据时会报如下异常:

                      


我们查看一下其构造方法源码

public ArrayAdapter(Context context, int resource, T[] objects) {
init(context, resource, 0, Arrays.asList(objects));
}


我们可以看到源码中是把数组通过Arrays.asList(objects)方法转换为list的,但java中通过这种方法转换的list是无法进行add或remove的,所以为出现上面的异常。

如果我们想使用ArrayAdapter的remove方法可以把数据转换为list,调用ArrayAdapter的ArrayAdapter(Context context, int resource, List<T> objects)构造方法。

另外

我们再看一下remove方法的源码

public void remove(T object) {
synchronized (mLock) {
if (mOriginalValues != null) {
mOriginalValues.remove(object);
} else {
mObjects.remove(object);
}
}
if (mNotifyOnChange) notifyDataSetChanged();
}


在代码最后调用了notifyDataSetChanged()方法,实现了listview数据的刷新。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: