其他分享
首页 > 其他分享> > Android开发-在ArrayAdapter中使用ArrayList与字符串数组

Android开发-在ArrayAdapter中使用ArrayList与字符串数组

作者:互联网

我是Android开发的新手,我对在Commonsware的“ Android开发的繁忙编码员指南”中阅读的摘录有疑问.有一个示例,其中它构造了一个扩展ListActivity的类,并显示了通过上下文菜单从列表中删除和删除的功能.在设置带有列表字符串源的ArrayAdapter之前,文本说将String数组转换为ArrayList类型,因为“我们希望能够即时更改列表的内容,这非常重要.如果您使用ArrayList而不是普通的String数组则更容易”

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

我在创建适配器时尝试使用普通数组,但出现了错误(如文本所述),但我不明白为什么.用字符串数组创建ArrayAdapter与ArrayList之间有什么区别…总之不会将它变成相同的List对象吗?尝试通过适配器添加/插入/删除时,是否与原始源变量有某种联系?

抱歉,很长的问题,但在此先感谢.

解决方法:

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

标签:arraylist,android-arrayadapter,android
来源: https://codeday.me/bug/20191208/2094046.html