gpt4 book ai didi

java - 如何在 Android 中按名称从类型化数组资源中获取值?

转载 作者:太空宇宙 更新时间:2023-11-03 13:00:14 25 4
gpt4 key购买 nike

假设我有一个这样的资源 xml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<resources>
<array name="difficulties">
<item>
<integer name="level">1</integer>
<integer name="fixed_blocks">2</integer>
<integer name="color_count">2</integer>
</item>
<item>
<integer name="level">2</integer>
<integer name="fixed_blocks">4</integer>
<integer name="color_count">3</integer>
</item>
<item>
<integer name="level">3</integer>
<integer name="fixed_blocks">6</integer>
<integer name="color_count">3</integer>
</item>
</array>
</resources>

如何按名称从 item 中获取整数值? TypedValue 的 API 似乎不包含任何方法。如果这对于 TypedArray 是不可能的,那怎么办?

如果我可以通过序号从项目中获取值,那也可以。

最佳答案

我不记得这是可能的(但我可能是错的)。根据项目的结构(在 difficulties 数组中)判断,您可以做其他事情,您可以使用整数数组的数组。知道项目数组在第一个位置有 level,在第二个位置有 fixed_blocks 等等,你可以很容易地得到值。您可以在此处找到这方面的示例 Android Resource - Array of Arrays

编辑:这是您正在寻找的方法吗?

private int[] getLevelConstants(int level) {
int[] result = null;
TypedArray ta = getResources().obtainTypedArray(R.array.difficulties);
// keep in mind the differences between the level(starts at 1) and the index of the difficulties array which starts at 0
int id = ta.getResourceId(level, 0);
if (id > 0) {
result = getResources().getIntArray(id);
} else {
// something bad
}
return result;
}

数组将是:

<?xml version="1.0" encoding="utf-8"?>
<resources>

<integer-array name="difficulties">
<item>@array/level1</item>
<item>@array/level2</item>
</integer-array>

<integer-array name="level1" >
<item>1</item>
<item>2</item>
<item>2</item>
</integer-array>

<integer-array name="level2" >
<item>2</item>
<item>4</item>
<item>3</item>
</integer-array>

</resources>

关于java - 如何在 Android 中按名称从类型化数组资源中获取值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12675428/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com