簡體   English   中英

我們如何動態地將數組從Java文件添加到android中現有的xml文件中?

[英]How do we dynamically add an array from a java file to an existing xml file in android?

我們正在嘗試將Java文件中的數組動態添加到xml文件中。

我們有一個ArrayList catList,它是通過從網站讀取xml文件來填充的。 ArrayList像這樣填充:[item1,item2,item3,item4,item5]。

preferences.xml

<?xml version="1.0" encoding="utf-8"?>

<ListPreference
    android:title="Ondernemer selecteren"
    android:summary="Bij deze optie kunt U kiezen van welke ondernemer U de agenda wilt zien."
    android:key="listPref"
    android:defaultValue="Standaard"
    android:entries="@array/ondernemerArray"
    android:entryValues="@array/ondernemerValues"
/>

</PreferenceScreen>

arrays.xml

<?xml version="1.0" encoding="utf-8"?>

<resources>    
 <string-array name="ondernemerArray">
    <item></item>
</string-array>

 <string-array name="ondernemerValues">
    <item></item>
</string-array>

有誰知道我們如何將catList數組動態地放入元素之間的xml文件中,並動態地增加元素數量?

要使用動態值填充首選項列表,您可以在settings.xml中創建首選項,但不要指定其android:entries和android:entryValues屬性。

<ListPreference 
    android:title="@string/pref_title"
    android:summary="@string/pref_summary"
    android:key="prefkey"
    android:defaultValue="" />

然后,在首選項活動onCreate中添加一些代碼,以填充xml數據中的項目和entryValues。

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    addPreferencesFromResource(R.xml.settings);

    initializePreferenceList();

    ...
}

protected void initializePreferenceList(){

    ListPreference lpPref = (ListPreference)findPreference("prefkey");

    // Read your xml data somehow
    ...

    // Write some methods to fill a String array from your xml data:
    // something like toEntriesArray, toEntryValuesArray
    String[] entries = toEntriesArray(xmlData);
    String[] entryValues = toEntryValuesArray(xmlData);

    lpPref.setEntries(entries);
    lpPref.setEntryValues(entryValues);
}

您無需為此首選項在array.xml中定義任何值。

如我的評論所述, resources在編譯后無法更改。 因此,當您需要在運行時更新某些內容(例如此處的Array ,您將需要使用幾種可用的持久存儲選項形式之一。 使用哪一個取決於您的數據和您的需求。 如果您不需要它是持久性的,則可以使用static array但這聽起來好像不是您所需要的。

這些resources主要是幫助避免使Java代碼混亂,並且這些資源不是動態的,而更多的是使它們對於開發人員來說更容易,因為它們可以存儲和引用預編譯的東西。 我知道這不是您要找的答案,但希望可以幫助您清除有關resources

如果有人要添加更好或更准確的描述,請隨時進行編輯

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM