Android开发:如何将resources.getStringArray转为可变数组?
解决Android资源数组转可变集合的问题
你从resources.getStringArray(R.array.paintings)获取到的是不可变的String[]数组,无法直接赋值给ArrayList<String>,因为二者类型不匹配。以下是几种可行的转换方法:
方法1:Kotlin简洁写法(推荐)
直接使用Kotlin的扩展函数toMutableList()将数组转为可变列表:
val array = resources.getStringArray(R.array.paintings) val mutableList = array.toMutableList() // 现在可以执行增删操作 mutableList.removeAt(2) mutableList.add("新增画作名称")
方法2:Java风格写法
如果习惯Java的操作方式,可以用Arrays.asList()先将数组转为List,再用ArrayList包装(注意:Arrays.asList()返回的是固定大小的List,必须包装成ArrayList才能支持增删):
import java.util.Arrays val array = resources.getStringArray(R.array.paintings) val mutableArray = ArrayList(Arrays.asList(array)) // 执行操作 mutableArray.removeAt(2)
为什么你的原代码不生效?
resources.getStringArray()返回的是String[]类型,而ArrayList<String>是独立的集合类型,二者没有直接的赋值兼容关系,必须通过转换方法将数组转为可变集合类型才能进行增删操作。
内容的提问来源于stack exchange,提问作者Coder
相关产品推荐
相关产品推荐

