You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过循环将XML资源中的字符串程序化添加至列表?

循环获取XML资源字符串到列表的可行方案

你原来的写法存在语法错误,因为R.string.string<i>这种动态拼接资源名称的方式不成立——Android的资源ID是编译时生成的常量,无法通过这种方式直接调用。下面提供两种可行的实现方式:

方式一:动态查找资源ID(适用于连续命名的字符串)

通过resources.getIdentifier()方法根据名称动态获取资源ID,找不到时终止循环:

val stringList = mutableListOf<String>()
var i = 1
while (true) {
    // 参数:资源名称、资源类型、应用包名
    val resId = resources.getIdentifier("string$i", "string", packageName)
    if (resId == 0) { // 资源不存在时返回0,终止循环
        break
    }
    stringList.add(getString(resId))
    i++
}

方式二:使用字符串数组(更规范稳定)

如果这些字符串是一组相关内容,更推荐在strings.xml中定义<string-array>,避免依赖命名规则:
修改你的strings.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="my_string_array">
        <item>Text 1</item>
        <item>Text 2</item>
        <item>Text 3</item>
    </string-array>
</resources>

然后在MainActivity.kt中直接获取并转为可变列表:

val stringList = resources.getStringArray(R.array.my_string_array).toMutableList()

这种方式性能更好,也不需要担心命名不连续或资源名称变更导致的问题。

内容的提问来源于stack exchange,提问作者Balry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 07:12:54