2016-08-13 34 views
0

以下SO問題how-can-i-assign-an-id-to-a-view-programmatically解釋瞭如何以編程方式將id設置爲視圖。我的問題稍有不同。我想知道是否可以通過編程方式將資源ID /名稱設置爲數組。我如何分配一個id到一個在android中以編程方式創建的數組?

ArrayList<String> new_list = new ArrayList<>(); 
    String [] stringArray = {"foo", "bar"}; 

    for(String str:stringArray) { 
     new_list.add(str); 
    } 
    /* This is a random example of doing things I 
    * certainly have more complex computation 
    * add more random item and convert it back to array 
    */ 
    new_list.add("random_1"); 
    new_list.add("random_n"); 

    String [] updatedArray = new String[new_list.size()]; 
    updatedArray = new_list.toArray(updatedArray); 

資源ID的定義如下

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <item name="reservedNamedId" type="id"/> 
</resources> 

現在我想要做這樣的事情

updatedArray.setID(R.id.reservedNamedId); 

無法編譯,數組沒有像Views類一樣的方法setID。

我明白,如果我的字符串數組定義在XML中,我可以使用name屬性全局訪問它,但我想要的是編程方式創建一個數組,並指定一個全局名稱/ ID。所以基本意圖是定義一個數組資源,並通過資源ID在全局範圍內使用它。可能嗎?它可以用其他方式實現嗎?

+1

'//不允許,因爲數組沒有方法setID'。這是一個令人困惑的描述。更好:「不編譯」。 – greenapps

+0

我不這麼認爲它是可能的,你正在嘗試做什麼。這個資源ID基本上用來動態地爲組件分配ID。 –

+0

感謝@greenapps更新後 – jazaman

回答

0

的ID,你所談論的,是註定不會被用於除觀點或只讀數據的其他任何東西。 我建議將你的數組存儲在SharedPreferences中,或者在與一個intent相關的bundle中傳遞它。

第一種方法可以用下面的代碼來實現:

SharedPreferences.edit().putStringSet("your_key", stringSet) 
SharedPreferences.getStringSet("your_key", defaultSet) 

到第二方法的介紹可以在這裏(Passing ArrayList through Intent)找到。

+0

感謝@Jacob我想了想,既然沒有我有可能實現一些類似的更清晰的方式,但它違背了目的,因爲我現有的代碼庫只處理數組。 – jazaman

相關問題