Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将密钥从服务器映射到资源_Java_Android_Android Resources - Fatal编程技术网

Java 将密钥从服务器映射到资源

Java 将密钥从服务器映射到资源,java,android,android-resources,Java,Android,Android Resources,考虑这样一个事实,即您有一个从中获取数据的API,并且API本身返回某些键,接收客户端应该使用这些键来“解析”要呈现给用户的人类可读字符串 例如,键可能看起来像这样: DOMAIN_TYPE_SUBTYPE_ID 然后将对应于strings.xml中的给定条目: <string name="domain_type_subtype_id">This magical item</string> 然而,从我听到和读到的。。。这真的不是一种有效的方法。我认为在多个字符串的Re

考虑这样一个事实,即您有一个从中获取数据的API,并且API本身返回某些键,接收客户端应该使用这些键来“解析”要呈现给用户的人类可读字符串

例如,键可能看起来像这样:

DOMAIN_TYPE_SUBTYPE_ID
然后将对应于
strings.xml
中的给定条目:

<string name="domain_type_subtype_id">This magical item</string>
然而,从我听到和读到的。。。这真的不是一种有效的方法。我认为在多个字符串的
RecyclerView
设置中使用它是一个非常糟糕的主意

2) 在singleton类中的某个地方有一个包含所有数据(字符串、整数)的静态查找字段,但是考虑到要跟踪的键有很多,这可能是一个不幸的内存命中

Map<String, Integer> strings = new HashMap<String, Integer>() {{
    put("DOMAIN_TYPE_SUBTYPE_ID", R.string.domain_type_subtype_id);
    //...
}};
Map strings=newhashmap(){{
put(“域类型子类型ID”,R.string.DOMAIN类型子类型ID);
//...
}};
  • 感觉很脆弱,我会避免的

  • 我会做一些类似的事情,但使用switch语句:

    public static int lookupStringRes(String value) {
      switch (value) {
          case "DOMAIN_TYPE_SUBTYPE_ID": return R.string.domain_type_subtype_id;
    
          // ...
    
          default:
              Log.w("TAG", "Resource not found");
              return -1;
      }
    }
    
  • 并不是说这是最好的解决方案,但在我脑海中,这是我将开始的解决方案。Map vs Switch可以归结为内存vs性能,您将以内存为代价在Map中进行更快的查找

    public static int lookupStringRes(String value) {
      switch (value) {
          case "DOMAIN_TYPE_SUBTYPE_ID": return R.string.domain_type_subtype_id;
    
          // ...
    
          default:
              Log.w("TAG", "Resource not found");
              return -1;
      }
    }