假设我在arrays.xml中有一个三维数组,比如
<string-array name="level1-1">
<item name="id">a</item>
<item name="id">b</item>
</string-array>
<string-array name="level1-2">
<item name="id">c</item>
<item name="id">d</item>
</string-array>
<array name="level1">
<item>@array/level1-1</item>
<item>@array/level1-2</item>
</array>
<string-array name="level2-1">
<item name="id">e</item>
<item name="id">f</item>
</string-array>
<string-array name="level2-2">
<item name="id">g</item>
<item name="id">h</item>
</string-array>
<array name="level2">
<item>@array/level2-1</item>
<item>@array/level2-2</item>
</array>
<array name="top_level">
<item>@array/level1</item>
<item>@array/level2</item>
</array>
现在我想在我的Android应用程序中阅读它。通过阅读类似的问题,我得出结论,TypedArrays是检索数据的正确方法,虽然不难将整个三维块检索为TypedArray,但似乎没有任何工具可以检索另一个TypedArrays使用他们的ID。
那么如何从三维TypedArray中检索二维“切片”呢?
答案 0 :(得分:1)
您可以从xml
获取数组 List<String> tablel1-1 = Array.asList(getResources().getStringArray(R.array.table1-1));
List<String> tablel1-2 = Array.asList(getResources().getStringArray(R.array.table1-1));
HashMap<List<String>,List<String>> level1 = new HashMap<List<String>,List<String>(table1-1,table1-2);
List<String> tablel2-1 = Array.asList(getResources().getStringArray(R.array.table2-1));
List<String> tablel2-2 = Array.asList(getResources().getStringArray(R.array.table2-1));
HashMap<List<String>,List<String>> level2 = new HashMap<List<String>,List<String>(table2-1,table2-2);
最后,如果需要,您可以使用两个HashMap创建HashMap。
Hashmap<Hashmap<List<String>,List<String>>,Hashmap<List<String>,List<String>>> top_level = new
Hashmap<Hashmap<List<String>,List<String>>,Hashmap<List<String>,List<String>>>(level1,level2);
答案 1 :(得分:0)
好像我已经自己弄清楚了。一些Java代码执行检索“切片”的任务,如上例所示:
public TypedArray getSlice(TypedArray ta, long k) {
Resources res = getResources();
int id = ta.getResourceId((int)k, 0);
return res.obtainTypedArray(id);
}
与问题中给出的示例一样,函数调用应为getSlice(array, K)
。