У меня есть ListView, который содержит много TextViews, а один TextView должен содержать другой цвет фона в зависимости от извлекаемых данных.Извлечь цвет программно из R.color
Поскольку я не хочу жестко кодировать цвета, я использовал R.color для установки моих цветов. Это работает хорошо, но я должен проверять вручную для каждого цвета, потому что я замечаю, что могу получить цвета, такие как HashMap. Так что мой первый Try был такой:
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?
Заранее благодарен!
Хороший вопрос с достаточным количеством деталей! –
BTW, название цвета находится последовательно, не так ли? –
@PareshMayani Точно. Спасибо :) – rootingbill