zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    ASP.NET WebApi 文档Swagger中度优化
    ASP.NET五步打包下载Zip文件
    JavaScript——HashMap实现
    JS实现集合和ECMA6集合
    JavaScript——双向链表实现
    用JavaScript来实现链表LinkedList
    JavaScript结构三层——思想快速介绍
    浏览器自动刷新——基于Nodejs的Gulp LiveReload与VisualStudio完美结合。
    JavaScript原型OOP——你上车了吗?
    再谈JavaScript闭包及应用
  • 原文地址:https://www.cnblogs.com/liqw/p/4181327.html
Copyright © 2011-2022 走看看