android数组资源,数组资源 · Android知识点总结 · 看云

本文介绍了如何在Android中利用TypedArray处理资源文件定义的数组,包括integer-array和普通数组,以及如何在Java代码中通过Resources类获取并操作这些数组资源。示例涉及字符串数组、整型数组和自定义布局中的ListView数组应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#### Typed Array(数组资源)

- 有时候我们会在Java 代码中定义了两个数组, Android 并不推荐在Java 代码中定义数组,因为Android 允许通过资源文件来定义数组资源。

- Typed Array 代表一个通用类型的数组, 该类提供了getXxx(int index)方法来获取指定索引处的数组元素。

- Android 采用位于/res/values 目录下的arrays. xrnl 文件来定义数组资源,定义数组时XML资源文件的根元素也是<resources... />,该元素内可包含如下三种子元素。

-

-

-

- 目前官网已经将integer-array独立出来了,如下定义资源文件`res/values/integers.xml`,

~~~

4

8

16

32

~~~

java代码中可以这样引用

~~~

Resources res = getResources();

int[] bits = res.getIntArray(R.array.bits);

~~~

而在xml文件中这样引用In XML: `@[package:]array.bits`

- 为了能在Java 程序中访问到实际数组, Resources 提供了如下方法。

- String[] getStringArray(int id): 根据资源文件中字符串数组资源的名称来获取实际的字符串数组。

- int[] getlntArray(int id): 根据资源文件中整型数组资源的名称来获取实际的整型数组。

- TypedArray obtainTypedArray(int id): 根据资源文件中普通数组资源的名称来获取实际的普通数组。

- 示例如下

~~~

@color/c1

@color/c2

@color/c3

@color/c4

@color/c5

@color/c6

@color/c7

@color/c8

@color/c9

@string/c1

@string/c2

@string/c3

@string/c4

@string/c5

@string/c6

@string/c7

@string/c8

@string/c9

疯狂Java讲义

疯狂Ajax讲义

疯狂Android讲义

~~~

可以在xml文件中做如下引用,例如,如下界面布局文件中定义了一个ListView 数组, 并将android:entries

属性值指定为一个数组。界面布局文件代码如下。

~~~

android:orientation="vertical"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:gravity="center_horizontal">

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:entries="@array/books"/>

~~~

在Java代码就可以做如下操作

~~~

public class MainActivity extends Activity

{

// 获取系统定义的数组资源

String[] texts;

@Override

public void onCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

texts = getResources().getStringArray(R.array.string_arr);

// 创建一个BaseAdapter对象

BaseAdapter ba = new BaseAdapter()

{

@Override

public int getCount()

{

// 指定一共包含9个选项

return texts.length;

}

@Override

public Object getItem(int position)

{

// 返回指定位置的文本

return texts[position];

}

@Override

public long getItemId(int position)

{

return position;

}

// 重写该方法,该方法返回的View将作为的GridView的每个格子

@Override

public View getView(int position

, View convertView, ViewGroup parent)

{

TextView text = new TextView(MainActivity.this);

Resources res = MainActivity.this.getResources();

// 使用尺度资源来设置文本框的高度、宽度

text.setWidth((int) res.getDimension(R.dimen.cell_width));

text.setHeight((int) res.getDimension(R.dimen.cell_height));

// 使用字符串资源设置文本框的内容

text.setText(texts[position]);

TypedArray icons = res.obtainTypedArray(R.array.plain_arr);

// 使用颜色资源来设置文本框的背景色

text.setBackground(icons.getDrawable(position));

text.setTextSize(20);

return text;

}

};

GridView grid = (GridView) findViewById(R.id.grid01);

// 为GridView设置Adapter

grid.setAdapter(ba);

}

}

~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值