【发布时间】:2014-10-27 09:56:26
【问题描述】:
我有一个包含许多 TextView 的 ListView,一个 TextView 应该包含不同的背景颜色,具体取决于检索到的数据。
因为我不想硬编码我使用 R.color 设置颜色的颜色。这很好用,但我必须手动检查每种颜色,因为我注意到能够像 HashMap 一样获得颜色。所以我的第一次尝试是这样的:
switch(line) {
case "1":
lineColor = context.getResources().getColor(R.color.line1);
case "2":
lineColor = context.getResources().getColor(R.color.line2);
....
....
}
这似乎与干净的代码相去甚远,所以我尝试了一种不同的方法,使用字符串数组:
<string-array name="line_color_names">
<item>1</item>
<item>2</item>
....
</string-array>
<string-array name="line_color_values">
<item>#e00023</item>
<item>#ef9ec1</item>
....
</string-array>
在我的 AdapterClass 中,我刚刚创建了一个 HashMap 并将这个字符串数组放在一起:
String[] line_color_names = context.getResources().getStringArray(
R.array.line_color_names);
String[] line_color_values = context.getResources().getStringArray(
R.array.line_color_values);
lineColors = new HashMap<String, String>();
for (int i = 0; i < line_color_names.length; i++) {
lineColors.put(line_color_names[i], line_color_values[i]);
}
所以我的问题是:这是实现这一目标的唯一方法还是还有另一种方法,理想情况下是直接从 R.color 获取颜色?
提前致谢!
【问题讨论】:
-
好问题有足够的细节!
-
顺便说一句,颜色名称是按顺序排列的,对吧?
-
@PareshMayani 没错。谢谢你:)