標籤:
經常我們會在資源檔(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}};
這裡只是提供一種方式,不是最好,或許你還有更好的,請留言。
本文連結:http://www.cnblogs.com/liqw/p/4181327.html
Android 在資源檔(res/strings.xml)定義一維數組,間接定義二維數組