当前位置: 首页 > 面试题库 >

Android资源-数组数组

华昕
2023-03-14
问题内容

我正在尝试实现一种资源数据结构,其中包括一个数组数组,尤其是字符串。我遇到的问题是如何获取子数组对象及其特定值。这是我的资源文件的样子。

<resources>
   <array name="array0">
     <item>
       <string-array name="array01">
         <item name="id">1</item>
         <item name="title">item one</item>
       </string-array>
     </item>
     <item>
       <string-array name="array02">
         <item name="id">2</item>
         <item name="title">item two</item>
       </string-array>
     </item>
     <item>
       <string-array name="array03">
         <item name="id">3</item>
         <item name="title">item three</item>
       </string-array>
     </item>
   </array>
</resources>

然后,在我的Java代码中,我检索数组并尝试像这样访问子元素…

TypedArray typedArray = getResources().obtainTypedArray(R.array.array0);

TypedValue typedValue = null;

typedArray.getValue(0, typedValue);

在这一点上,typedArray对象应该表示字符串数组“ array01”,但是,我看不到如何检索“ id”和“
title”字符串元素。任何帮助将不胜感激,在此先感谢。


问题答案:

您几乎可以做您想做的。您必须分别声明每个数组,然后声明一个引用数组。像这样:

<string-array name="array01">
    <item name="id">1</item>
    <item name="title">item one</item>
</string-array>
<!-- etc. -->
<array name="array0">
    <item>@array/array01</item>
    <!-- etc. -->
</array>

然后在您的代码中执行以下操作:

Resources res = getResources();
TypedArray ta = res.obtainTypedArray(R.array.array0);
int n = ta.length();
String[][] array = new String[n][];
for (int i = 0; i < n; ++i) {
    int id = ta.getResourceId(i, 0);
    if (id > 0) {
        array[i] = res.getStringArray(id);
    } else {
        // something wrong with the XML
    }
}
ta.recycle(); // Important!


 类似资料:
  • 你可以将一切均视为 Puppet 的资源,你也可以使用数组资源。 使用这种想法,可以重构你的配置清单,使其更加简洁而清晰。 操作步骤 在你的配置清单中,将同一类型资源的几个实例定义在一个类中,例如:packages: package { "sudo" : ensure => installed } package { "unzip" : ensure => installed } package

  • 本文向大家介绍Android 导入资源中定义的对象数组,包括了Android 导入资源中定义的对象数组的使用技巧和注意事项,需要的朋友参考一下 示例 在某些情况下,需要在应用程序的资源中创建和定义自定义对象。这样的对象可以由Java简单类型,例如Integer,Float,String。 这是如何导入在应用程序资源中定义的对象的示例。该对象包含Category3个类别的属性: ID 颜色 名称 这

  • 定义 SHOW RESOURCES [FROM schemaName] 说明 列 说明 name 数据源名称 type 数据源类型 host 数据源地址 port 数据源端口 db 数据库名称 attribute 数据源参数 示例 mysql> show resources; +------+-------+-----------+------+------+----------------

  • 定义 ADD RESOURCE dataSource [, dataSource] ... ALTER RESOURCE dataSource [, dataSource] ... dataSource: simpleSource | urlSource simpleSource: dataSourceName(HOST=hostName,PORT=port,DB=dbNam

  • 问题内容: 假设我已经在Android资源中存储了一个二维数组,如下所示。如何在Arraylist这样的Java集合中获取它们? 例如,在一维数组的情况下,我们可以使用 当countries_array像 问题答案: 资源文件的元素只能用于一维数组。换句话说,介于和之间的所有内容都被视为单个字符串。 如果你想存储你所描述的方式(有效伪XML)的数据,你需要获得项目作为一个单一的使用和解析和元素自己

  • 问题内容: 我喜欢该方法返回资源数组的方式,该资源可以再次保存到服务器。 我正在尝试对Drupal RestWS 模块使用Angular,该模块返回一个对象,该对象具有多个“元”属性和一个称为list的属性,用于存储实际数据。有没有一种方法可以告诉资源使用该数组呢? 示例:返回: 问题答案: 使用最新的Angular版本(1.1.2或更高版本),可以使用transformResponse配置资源: