基本上我想将字符串单词转换为int,如xml,但现在从原始文件转换。 我可以从xml:
这样做final int[] colorArray = getResources().getIntArray(R.array.colors_int);
我在xml文件中有这个:
<integer-array name="colors_int">
<item>@color/red</item>
<item>@color/yellow</item>
<item>@color/blue</item>
</integer-array>
通过这个我可以轻松地在我的对象上设置颜色:
view.setBackgroundColor(colorArray[i]);
但是现在我有一个原始文件,其中包含用空格分隔的颜色名称:&#34;蓝红黄&#34;
如何将这些读入int数组/ Integer arraylist中,这样我可以轻松地为对象着色? 我试过这个:
input_file_int.add( Integer.parseInt(line));
但它没有用,因为字符串不是int。
java.lang.NumberFormatException: Invalid int: "blue"
使用字符串arraylist,它完美地工作但我不能使用字符串来为对象着色。
我怎么能这样做?
修改
我有这个示例原始文件:
black
gray
silver
maroon
red
olive
我的colors.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<!--16 basic color -->
<color name="black">#000000</color>
<color name="gray">#808080</color>
<color name="silver">#C0C0C0</color>
<color name="white">#FFFFFF</color>
<color name="maroon">#800000</color>
</resources>
这就是我如何初始化Integer ArrayList:
ArrayList<Integer> input_file_int= new ArrayList<Integer>();
答案 0 :(得分:0)
您可以创建Map
种颜色:
Map<String, Integer> colors = new HashMap<String, Integer>();
colors.put("blue", 0xff00ff00);
input_file_int.add(colors.get("blue"));
编辑: 如果您正在尝试查找xml上列出的颜色,您可以这样做:
Resources resources = getResources();
int colorId = resources.getIdentifier(line, "color", "com.mypackage.myapplication");
int color = resources.getColor(colorId);
input_file_int.add(color);
答案 1 :(得分:0)
// Your arraylist
ArrayList<Integer> input_file_int = new ArrayList<Integer>();
// Read raw file
Scanner scanner = new Scanner(getResources().openRawResource(
R.raw.colors));
try {
while (scanner.hasNext()) {
switch (scanner.next()) {
// include case of your all 16 (or any number of) colors of your
// colors.xml file
case "black":
input_file_int.add(Integer.parseInt(getResources()
.getString(R.color.black).substring(3), 16));
break;
case "gray":
input_file_int.add(Integer.parseInt(getResources()
.getString(R.color.gray).substring(3), 16));
break;
case "silver":
input_file_int.add(Integer.parseInt(getResources()
.getString(R.color.silver).substring(3), 16));
break;
// and keep going on
default:
break;
}
}
} catch (Exception e) {
Log.e(getTitle().toString(), e.getMessage());
} finally {
scanner.close();
}
// Now, Arraylist contains true Integer value of colors
// Be aware you can't directly use it.
// Use it like this...
view.setBackgroundColor(0xff000000 + input_file_int.get(2));
// Silver in this case