经常我们会在资源文件(res/strings.xml)定义字符串,一维数组,那定义二维数组?直接定义二维数组没找到,可以间接定义。
其实很简单,看过用过一次就可以记住了,一维数组估计大家经常用到,但是二维数组应该比较少用,因为只能间接定义二维数组。
数组的定义:
数组就是一次性定义相同数据类型的一组变量数组定义。
数组的特点:
先来看看字符串是怎么定义的。其中,添加注释的方法:<!-- 注释内容 -->
|
1
2
|
<!-- 字符串 --><string name="hello_world">Hello world!</string> |
当然在java中这样定义:String a = "Hello world"; 或者String s = new String("abcdefghijklmnopqrstuvwxyz");
一、一维数组
|
1
2
3
4
5
6
7
|
<!-- 一维数组 --><string-array name="good"> <item>a</item><item>b</item><item>c</item><item>d</item></string-array> |
在java代码获取资源中的数组方法
|
1
2
3
|
Resources res =getResources();// 取xml文件格式的字符数组String[] good=res.getStringArray(R.array.good); |
顺便看看在java中如何定义:String[] s = {"a","b","c","d"};
二、二维数组
到这里,你知道二维数组怎么定义么,是不是还要想一下呢,其实是不能直接在资源文件中定义二维数组的,所以只能用间接的方式来获取二维数组,多维数组一样这样间接来定义获取。
|
1
2
3
4
5
|
<!-- 用一维数组的方式间接定义二维数组 --><array name="two"><item>a,b,c,d,e,f,g</item><item>h,i,g,k,l,m,n</item></array> |
用java解析上面的一维数组为二维数组
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
Resources res =getResources();// 取xml文件格式的字符数组String[] array = res.getStringArray(R.array.two);String[][] result = getTwoDimensionalArray(array);/*** 按设定规则解析一维数组为二维数组* @param array* @return*/private
String[][] getTwoDimensionalArray(String[] array) {String[][] twoDimensionalArray =
null;for
(int
i = 0; i < array.length; i++) {String[] tempArray = array[i].split(",");if
(twoDimensionalArray == null) {twoDimensionalArray =
new String[array.length][tempArray.length];}for
(int
j = 0; j < tempArray.length; j++) {twoDimensionalArray[i][j] = tempArray[j];}}return
twoDimensionalArray;} |
这里提供的仅仅是一个方式,这样国际化多语言的时候就可以用上场。很明显,这样多了一个解析的过程,慢了很多。或者在设计上不用二维数组也行,用其他方法。可能你会觉得直接在java中定义就好了:
类似于int a[2][3]={{1,2,3},{4,5,6}};
这里只是提供一种方式,不是最好,或许你还有更好的,请留言。
Android 在资源文件(res/strings.xml)定义一维数组,间接定义二维数组
原文地址:http://blog.csdn.net/androidmylove/article/details/42490929