Android中通過代碼獲取arrays.xml文件中的數據


 android工程res/valuse文件夾下的arrays.xml文件中用於放各種數組數據,比如字符串數組、整型數組等,數組中的數據可能是具體的值,也有可能是對資源數據的引用,下面針對這兩種情況通過代碼來獲取相應的數組數據。

  1. 一、數組中的數據為具體的值:

        比如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

  2.  

    二、數組中的數據為對資源數據的引用:

    比如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

注意事項

  • 通過android的arrays.xml獲取數組信息時,在代碼中初始化數組時建議通過線程初始化,避免在初始化的時候阻塞UI線程。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM