1

在我的应用程序中,我想为 arrayList 添加一些值,并且我希望添加的项目将是 arrayList 的第一项。我使用此代码

Sphere[] spheres = new ObjectMapper().readValue(response.getJSONArray("data").toString(),Sphere[].class);
                mSphereList = Arrays.asList(spheres);
                Sphere sphere = new Sphere();
                sphere.setId(0);
                sphere.setTitle("All");
                mSphereList.add(0,sphere);
                mListView.setAdapter(new CategoryAdapter(CategoryActivity.this,mSphereList));

当我运行我的应用程序时,我遇到了异常

ERROR/AndroidRuntime(25878): FATAL EXCEPTION: main
        java.lang.UnsupportedOperationException
        at java.util.AbstractList.add(AbstractList.java:404)

我在这里做错了什么。你能在这里告诉我一个好的解决方案吗?

4

3 回答 3

5

Arrays.asList()不返回 ArrayList。它返回一个具有固定大小的列表,由原始数组支持(如文档所述)。

你必须创建一个真正的 ArrayList:

mSphereList = new ArrayList<>(Arrays.asList(spheres));
于 2013-11-11T12:24:58.327 回答
0

您可以在指定索引处添加

list.add(1, object1)
list.add(2, object3)
list.add(2, object2)
于 2013-11-11T12:23:42.627 回答
0

Arrays.asList()会给你一个固定大小的列表,这就是你添加失败的原因。你需要使用:

mSphereList = new ArrayList<>(Arrays.asList(spheres));
于 2013-11-11T12:25:52.580 回答