0

我们正在尝试将 java 文件中的数组动态添加到 xml 文件中。

我们有一个 ArrayList catList,它是通过从网站读取 xml 文件来填充的。ArrayList 是这样填充的:[item1, item2, item3, item4, item5]。

首选项.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>

数组.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 文件中,在元素之间并动态增加元素的数量?

4

2 回答 2

1

要使用动态值填充首选项列表,您可以在 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 中定义任何值。

于 2013-05-13T14:10:02.740 回答
0

正如我的评论中所述,resources编译后无法更改。因此,当您有需要在运行时更新的内容(例如Array此处)时,您将需要使用几种可用的持久存储选项中的一种。使用哪一个将取决于您的数据和您的需求。如果您不需要它是持久的,那么您可以使用 astatic array但听起来这不是您需要的。

主要resources有助于避免弄乱您的 java 代码,并且并不意味着是动态的,而是为了让开发人员更轻松地存储和引用预编译的东西。我知道这不是您正在寻找的答案,但希望这可以帮助澄清一些关于resources.

如果有人有更好或更准确的描述要添加,请随时编辑

于 2013-05-13T13:09:52.843 回答