kotlin-从可绘制文件夹中的图像数组中获取图像

问题描述 投票:0回答:2

我想从资源返回我的图像数组,例如,这是我的数组:

 <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,但它们都不起作用

android kotlin android-drawable android-resources
2个回答
1
投票

您必须使用TypedArray

以XML定义的TypedArray。您可以使用它来创建一个数组其他资源,例如可绘制对象。

示例:

XML

<integer-array name="drawer_icons">
    <item>@drawable/drawer_home</item>
</integer-array>

科特琳

val imageArray = resources.obtainTypedArray(R.array.drawer_icons)

1
投票

这不仅是一个int数组。您应该使用

val imagesArray = resources.obtainTypedArray(R.array.drawer_icons)

val icon = imagesArray.getResourceId(position, -1)

并且不要忘记在使用imagesArray.recycle()之后调用它。

© www.soinside.com 2019 - 2024. All rights reserved.