我想从资源返回我的图像数组,例如,这是我的数组:
<integer-array name="drawer_icons">
<item>@drawable/drawer_home</item>
</integer-array>
我通过以下代码获取数组:
val imagesArray =resources.getIntArray(R.array.drawer_icons)
问题是,在上面的代码之后,imagesArray的值为0
如何从资源返回可绘制数组?
编辑:我对代码进行了一些更改,又遇到了另一个问题,我需要从这些数组中创建一个数据类,这是我的代码:
data class DrawerModel(var title:String, var img: Any)
val titlesArray=resources.getStringArray(R.array.drawer_titles)
val imagesArray =resources.obtainTypedArray(R.array.drawer_icons)
val list= ArrayList<DrawerModel>()
for (i in titlesArray.indices){
val model=DrawerModel(titlesArray[i],imagesArray[i])
list.add(model)
}
我在imagesArray [i]上出错,在DrawerModel类中img的类型应该是什么?我已经尝试过任何,Int,String,但它们都不起作用
您必须使用TypedArray
以XML定义的TypedArray。您可以使用它来创建一个数组其他资源,例如可绘制对象。
示例:
XML
<integer-array name="drawer_icons">
<item>@drawable/drawer_home</item>
</integer-array>
科特琳
val imageArray = resources.obtainTypedArray(R.array.drawer_icons)
这不仅是一个int数组。您应该使用
val imagesArray = resources.obtainTypedArray(R.array.drawer_icons)
val icon = imagesArray.getResourceId(position, -1)
并且不要忘记在使用imagesArray.recycle()
之后调用它。