【问题标题】:How do I access getStringArray with a variable如何使用变量访问 getStringArray
【发布时间】:2020-06-22 01:43:13
【问题描述】:

我确信有一个完美的好方法可以做得更好,但基本上我想要的是通过 strings.xml 创建 2-dim 数组。

即。我有一个主要类别:

<string-array name="main_categories">
    <item>index_etf</item>
    <item>region_etf</item>
    <item>commodity_etf</item>
</string-array>

还有一堆子类别:

<string-array name="index_etf">
    <item>DOW</item>
    <item>NASDAQ</item>
</string-array>

而不是像这样硬编码:

    MainCategoryArray = getResources().getStringArray(R.array.main_categories);
    IndexETFArray = getResources().getStringArray(R.array.index_etf);
    ...

我想做这样的事情:

    MainCategoryArray = getResources().getStringArray(R.array.main_categories);

    loop through the main array and populate the sub categories

不确定我是否可以根据 MainCategoryArray 的内容使用 int 变量访问 getStringArray,是吗?

有没有更好的方法来构建基于strings.xml 的多维?抱歉,刚接触这个。

【问题讨论】:

    标签: java android arrays arraylist


    【解决方案1】:

    您可以在资源上使用限定符,以便 android 本身根据限定符选择合适的资源。例如,您可以将values-small 用于小屏幕,values-large 用于大屏幕,values 用于其他屏幕尺寸。你可以看到所有可用的限定符here

    【讨论】:

      【解决方案2】:

      试试这个,

      变量声明

      private final static String TAG = MainActivity.class.getSimpleName();
      private ArrayList<String> mainCategoryArray;
      private ArrayList<ArrayList<String>> categoryArrays  = new ArrayList<>();
      

      用法

       mainCategoryArray = new ArrayList<>(Arrays.asList(getResources().getStringArray(R.array.main_categories)));
          for(String mainCategory : mainCategoryArray){
              try {
                  categoryArrays.add(new ArrayList<>(Arrays.asList(getResources().getStringArray(getResources().getIdentifier(mainCategory, "array", getPackageName())))));
              } catch (Resources.NotFoundException e){
                  Log.e(TAG, e.toString());
              }
          }
      

      示例 strings.xml 数组

      <string-array name="main_categories">
          <item>index_etf</item>
          <item>region_etf</item>
          <item>commodity_etf</item>
      </string-array>
      
      <string-array name="index_etf">
          <item>DOW</item>
          <item>NASDAQ</item>
      </string-array>
      
      <string-array name="region_etf">
          <item>DOW</item>
          <item>NASDAQ</item>
      </string-array>
      
      <string-array name="commodity_etf">
          <item>DOW</item>
          <item>NASDAQ</item>
      </string-array>
      

      希望这会有所帮助:)

      【讨论】:

      • @Mairyu 如果你喜欢这个答案,也请采纳:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-07
      • 1970-01-01
      • 2011-06-07
      • 2012-09-09
      • 2013-11-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多