Java 无法对列表视图项使用字符串资源

Java 无法对列表视图项使用字符串资源,java,android,android-fragments,android-listview,android-listfragment,Java,Android,Android Fragments,Android Listview,Android Listfragment,我试图使用字符串资源来处理我的两行列表视图项,而不是对它们进行硬编码,但我遇到了这个错误。我怎样才能解决这个问题 在使用字符串资源之前 public class ListData { public static final String[][] items = { {"America","America Description"}, {"Europe","Europe Description"}, }; } public cla

我试图使用字符串资源来处理我的两行列表视图项,而不是对它们进行硬编码,但我遇到了这个错误。我怎样才能解决这个问题

在使用字符串资源之前

public class ListData {

    public static final String[][] items = {
            {"America","America Description"},
            {"Europe","Europe Description"},
    };
}
public class ListData {

    public static final String[][] items = {
            {R.string.america,R.string.america_description},
            {R.string.europe, R.string.europe_description},
    };
}
使用字符串资源后

public class ListData {

    public static final String[][] items = {
            {"America","America Description"},
            {"Europe","Europe Description"},
    };
}
public class ListData {

    public static final String[][] items = {
            {R.string.america,R.string.america_description},
            {R.string.europe, R.string.europe_description},
    };
}
错误

不兼容的类型。必需:java.lang.String |找到:int


您要么使用枚举,在这种情况下,将为您拥有的每个字符串分配一个整数,要么使用自动生成的值,其中java/android生成常量整数来代替您给定的字符串


无论哪种方式,R.string.somestring的输出都是一个整数,您的声明要求您输入字符串。因此出现错误是因为
R.string.america
是一个整数,表示
strings.xml
中的字符串。因此,您应该将
String[][]
的类型更改为
int[][]
。如果必须将值分配给
TextVIew
android将负责
strings.xml

中的查找,您需要知道
R
类中只存储了解析为所代表字符串的引用。这些引用都是整数。所以你有两种可能来解决这个问题:

  • 只需将2D数组的类型更改为int
  • 使用
    getResources().getString(stringRes)
    解析字符串引用,然后将其添加到字符串数组中