經常我們會在資源文件(res/strings.xml)定義字符串,一維數組,那定義二維數組?直接定義二維數組沒找到,可以間接定義。
其實很簡單,看過用過一次就可以記住了,一維數組估計大家經常用到,但是二維數組應該比較少用,因為只能間接定義二維數組。
數組的定義:
數組就是一次性定義相同數據類型的一組變量數組定義。
數組的特點:
1.數組是相同數據類型的元素的集合。
2.數組中的各元素是有先后順序的,它們在內存中按照這個先后順序連續存放在一起。
3.數組元素用整個數組的名字和它自己在數組中的順序位置來表示。例如,a[0]表示名字為a的數組中的第一個元素,a[1]代表數組a的第二個元素。
先來看看字符串是怎么定義的。其中,添加注釋的方法:<!-- 注釋內容 -->
<!-- 字符串 --> <string name="hello_world">Hello world!</string>
當然在java中這樣定義:String a = "Hello world"; 或者String s = new String("abcdefghijklmnopqrstuvwxyz");
一、一維數組
<!-- 一維數組 --> <string-array name="good"> <item>a</item> <item>b</item> <item>c</item> <item>d</item> </string-array>
在java代碼獲取資源中的數組方法
Resources res =getResources(); // 取xml文件格式的字符數組 String[] good=res.getStringArray(R.array.good);
順便看看在java中如何定義:String[] s = {"a","b","c","d"};
二、二維數組
到這里,你知道二維數組怎么定義么,是不是還要想一下呢,其實是不能直接在資源文件中定義二維數組的,所以只能用間接的方式來獲取二維數組,多維數組一樣這樣間接來定義獲取。
<!-- 用一維數組的方式間接定義二維數組 --> <array name="two"> <item>a,b,c,d,e,f,g</item> <item>h,i,g,k,l,m,n</item> </array>
用java解析上面的一維數組為二維數組
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}};
這里只是提供一種方式,不是最好,或許你還有更好的,請留言。