假设我有4个选项供用户使用,包括北,南,东和西(N,S,E,W)。根据用户选择的选项,我希望每个方向都与颜色相关联,当用户选择他们必须执行的方向时,我将其保存到我的后端Parse.com,然后设置整个应用程序的背景颜色这与选择的方向有关。
目前我正在这样做:
if (currentUser.getString("direction").equals("north")) {
//set background color to red
}
else if (currentUser.getString("direction").equals("west")) {
//set background color to blue
}
else if (currentUser.getString("direction").equals("east")) {
//set background color to black=
}
else if (currentUser.getString("direction").equals("south")) {
//set background color to green
}
当只有四个选项时,这不是太糟糕,但是我已经简化了这个例子,如果有100个选项,这不再是一个好的选择。
另一种更有效的方法是什么?
用户没有选择颜色,我想将方向链接到我想要的颜色?
感谢您的帮助。
我使用枚举方向获取此编译错误:
答案 0 :(得分:3)
您可以使用enum
type。像,
enum Direction {
NORTH(Color.RED), WEST(Color.BLUE), EAST(Color.BLACK), SOUTH(
Color.GREEN);
Direction(Color c) {
color = c;
}
private Color color;
public static Direction fromName(String name) {
for (Direction d : Direction.values()) {
if (d.name().equalsIgnoreCase(name)) {
return d;
}
}
return NORTH;
}
public Color getColor() {
return color;
}
}
然后,您可以像
一样使用它Direction.fromName("south").getColor(); // <-- green.
答案 1 :(得分:0)
为什么你不使用android TypedArray?
例如,您可以使用:
RES /值/ arrays.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<array name="parse_colors">
<item>#FFFF0000</item>
<item>#FF00FF00</item>
<item>#FF0000FF</item>
</array>
</resources>
的src / MyActivity.java
TypedArray parseColors = getResources().obtainTypedArray(R.array. parse_colors);
int currentUserBackgroundValue = currentUser.getInt("direction");
String hexColor = colors.getColor(currentUserBackgroundValue, 0); //the second value it's the default value
myView.setBackgroundColor(Color.parseColor(hexColor));
为了在解析服务器和您的应用程序之间保持一致,请考虑使用ParseConfig
,文档here