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

來源:互聯網
上載者:User

標籤:

經常我們會在資源檔(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)定義一維數組,間接定義二維數組

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.