Android 在资源文件(res/strings.xml)定义一维数组,间接定义二维数组

经常我们会在资源文件(res/strings.xml)定义字符串,一维数组,那定义二维数组?直接定义二维数组没找到,可以间接定义。

其实很简单,看过用过一次就可以记住了,一维数组估计大家经常用到,但是二维数组应该比较少用,因为只能间接定义二维数组。

数组的定义:

数组就是一次性定义相同数据类型的一组变量数组定义。

数组的特点:

1.数组是相同数据类型的元素的集合。
2.数组中的各元素是有先后顺序的,它们在内存中按照这个先后顺序连续存放在一起。
3.数组元素用整个数组的名字和它自己在数组中的顺序位置来表示。例如,a[0]表示名字为a的数组中的第一个元素,a[1]代表数组a的第二个元素。

先来看看字符串是怎么定义的。其中,添加注释的方法:<!-- 注释内容 -->

?
1
2
<!-- 字符串 -->
<string name= "hello_world" >Hello world!</string>

当然在java中这样定义:String a = "Hello world"; 或者String s = new String("abcdefghijklmnopqrstuvwxyz");

一、一维数组

?
1
2
3
4
5
6
7
<!-- 一维数组 -->
<string-array name= "good" >
  <item>a</item>
<item>b</item>
<item>c</item>
<item>d</item>
</string-array>

在java代码获取资源中的数组方法

?
1
2
3
Resources res =getResources();
// 取xml文件格式的字符数组
String[] good=res.getStringArray(R.array.good);

顺便看看在java中如何定义:String[] s = {"a","b","c","d"};

二、二维数组

到这里,你知道二维数组怎么定义么,是不是还要想一下呢,其实是不能直接在资源文件中定义二维数组的,所以只能用间接的方式来获取二维数组,多维数组一样这样间接来定义获取。

?
1
2
3
4
5
<!-- 用一维数组的方式间接定义二维数组 -->
<array name= "two" >
<item>a,b,c,d,e,f,g</item>
<item>h,i,g,k,l,m,n</item>
</array>

用java解析上面的一维数组为二维数组

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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}};

这里只是提供一种方式,不是最好,或许你还有更好的,请留言。


其他精彩文章文章

jQuery教程(10)-DOM树操作之内容setter和getter方法

android学习笔记(37)使用 DatePickerDialog、TimePickerDialog

更多关于android开发文章



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值