Java 从任何类获取Android资源值
我刚开始使用Android编程,对一些概念我还是有点困惑。我将用一个简化的示例告诉您我正在尝试做什么: 我正在从远程服务器(PHP/MySQL/JSON)检索汽车列表,并在列表视图中显示它们 这是服务器响应JSON结构:Java 从任何类获取Android资源值,java,android,scope,android-resources,Java,Android,Scope,Android Resources,我刚开始使用Android编程,对一些概念我还是有点困惑。我将用一个简化的示例告诉您我正在尝试做什么: 我正在从远程服务器(PHP/MySQL/JSON)检索汽车列表,并在列表视图中显示它们 这是服务器响应JSON结构: { error: null, data: { cars: [ {name: "Lamborghini Diablo", color_id: 1}, {name: "McLaren F1", colo
{
error: null,
data: {
cars: [
{name: "Lamborghini Diablo", color_id: 1},
{name: "McLaren F1", color_id: 2},
{name: "Ferrari F355", color_id: 1}
]
}
}
然后我写了汽车课程:
public class Car {
public String name;
public int color_id;
public String color_name;
public Car(JSONObject data) {
try {
this.name = data.getString("name");
this.color_id = data.getInt("color_id");
} catch (JSONException e) {
e.printStackTrace();
}
}
}
最后,这是一个strings.xml资源文件:
<string-array name="color_names">
<item>White</item>
<item>Yellow</item>
<item>Orange</item>
<item>Red</item>
<item>Black</item>
</string-array>
白色
黄色的
橙色
红色
黑色
当我从服务器获取数据时,有一个for
循环来创建Car类的实例,每个实例对应JSONArray
中的每个项目
我想做的是使用属性color\u id
作为数组索引,从
获取颜色名称,但是我找不到从Car
类构造函数获取R.array
资源的方法
我该怎么做
谢谢大家! 您应该为Car对象提供上下文,或者使用app context从某个util类中的res实例化数组,并提供类似于
Utils.getColorNameByColorId(int color\u id)的API
。由于性能原因,最后一种方法更可取-数组将只实例化一次
我要做的是从,
使用属性color_id作为数组索引,但我找不到方法
从Car类构造函数获取R.array资源
您的类必须知道“关于上下文”,因为资源只能从上下文中获得,所以这里您需要对构造函数进行一些修改:
public Car(Context c, JSONObject data) {
// do your stuff
}
现在,您的类知道当前上下文,因此您可以获得所需的数据:
String name = c.getResources().getStringArray(R.id.arrayId)[<index>];
String name=c.getResources().getStringArray(R.id.arrayId)[];
希望它能解决您的问题。您能给我一个Utils类的最低代码吗?是静态类吗?它如何知道应用程序上下文?非常感谢。