android工程res/valuse文件夾下的arrays.xml文件中用於放各種數組數據,比如字符串數組、整型數組等,數組中的數據可能是具體的值,也有可能是對資源數據的引用,下面針對這兩種情況通過代碼來獲取相應的數組數據。
-
一、數組中的數據為具體的值:
比如arrays.xml文件中的數組如下:
<string-array name="select_dialog_items">
<item>Command one</item>
<item>Command two</item>
<item>Command three</item>
<item>Command four</item>
</string-array>
代碼中獲取該數組資源的具體代碼如下:
String[] items = getResources().getStringArray(R.array.select_dialog_items);
items數組中的數據就是arrays.xml文件中對應資源id R.array.select_dialog_items中的數據;
數據為其它類型的數組也可以通過Resources類中相應的方法獲取,比如:
獲取整型數組的數據方法為:
public int[] getIntArray(int id) throws NotFoundException
獲取文本數組的數據方法為:
public CharSequence[] getTextArray(int id) throws NotFoundException
-
二、數組中的數據為對資源數據的引用:
比如arrays.xml文件中的數組如下:
<string-array name="feed_icons">
<item>@drawable/latest</item>
<item>@drawable/video</item>
<item>@drawable/world</item>
<item>@drawable/sports</item>
<item>@drawable/arts</item>
<item>@drawable/dining</item>
</string-array>
代碼中獲取該數組資源的具體代碼如下:
TypedArray typedArray = getResources().obtainTypedArray(R.array.feed_icons);
String[] titleArr = getResources().getStringArray(R.array.feed_names);
if( null != titleArr ){
int titleLength = titleArr.length;
for( int index = 0; index < titleLength; index++ ){
int feedResId = typedArray.getResourceId( index, 0 );
//...
}
}
獲取arrays.xml中數據項為引用資源數據的數組時,首先通過Resources類中的obtainTypedArray方法獲取到TypedArray實例,然后通過TypedArray方法中的getResourcesId方法獲取數組中每一項的資源id,這樣就能順利地引用到數組中資源了。
通過代碼獲取arrays.xml中的數組資源時,數組中的元素項不宜過多,特別是一次性獲取的時候,有可能你在使用時它還沒有獲取到你需要使用的數組項。
END