Android开发 - 使用ArrayList <string>与ArrayAdapter的字符串数组</string>

时间:2011-01-25 15:01:01

标签: android arraylist android-arrayadapter

我是Android开发的新手,我有一个关于我在Commonsware的“繁忙的编码器Android开发指南”中读到的摘录的问题。有一个示例,它正在构建一个扩展ListActivity的类,并显示通过Context Menus从列表中删除和删除的功能。在使用列表的字符串源设置ArrayAdapter之前,文本说将String数组转换为ArrayList类型,因为“我们希望能够动态更改列表的内容,这很多如果使用ArrayList而不是普通的String数组“

,则更容易

我理解这个概念,如果我们使用ArrayList或String数组直接操作列表,但是如果我们使用ArrayAdapter.add / insert / remove方法,为什么这很重要?一旦创建了ArrayAdapter(以及我从.java文件中理解的内容),它就会将源数据转换为List对象,无论它是来自数组还是ArrayList。

我在创建适配器时尝试使用普通数组并且出现错误(正如文本所说的那样),但我不明白为什么。创建一个ArrayAdapter与一个字符串数组和一个ArrayList有什么区别...它不会把它变成同一个List对象吗?在尝试通过适配器添加/插入/删除时,是否存在与原始源变量的某种联系?

很抱歉这个问题很长,但提前谢谢。

1 个答案:

答案 0 :(得分:3)

您可以更改原始阵列/ arraylist。然后在适配器上调用notifyDataSetChanged()并使用新信息更新列表。如果使用ArrayList,则可以使用其所有常规操作在一个普通的字符串数组中无法使用的任意索引处插入/删除数据。 因此,ListView的内容与原始数据源非常相关 - 在调用myListView.setAdapter()时,适配器不会修复内容。 但是,如果使用数组尝试添加,删除,插入等方法将导致错误,因为无法像这样使用数组。 ArrayAdapter实际上会将String数组转换为AbstractList对象,但不能修改它。