繁体   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