Android 在資源文件(res/strings.xml)定義一維數組,間接定義二維數組


經常我們會在資源文件(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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM