从xml数组项名称创建xml列表首选项条目名称

时间:2015-06-09 16:33:10

标签: android xml android-preferences

我使用数组letter_namesletter_values在xml中定义列表首选项。他们看起来像:

<string-array name="letter_names">
<item name="a">"a"</item>
<item name="b">"b"</item>
<item name="c">"c"</item>
</string-array>

<array name="letter_values">
<item name="a">1</item>
<item name="b">2</item>
<item name="c">3</item>
</array>

列表在单独的文件中定义,并由我的首选项片段加载。

<ListPreference
    android:key="list_preference"
    android:title="Select letter"
    android:summary="This is the letters"
    android:entries="@array/letter_names"
    android:entryValues="@array/letter_values"
    android:dialogTitle="Letters"
    />

这有效,但对我来说似乎有点不必要的冗余和不合理。我想通过使用数组android:entries<items>的名称来定义letter_values的值。这样我只能使用一个数组并轻松匹配条目和值。

我可以在xml中执行此操作吗?如果是这样的话?

在加载首选项时,以编程方式执行此操作不是我正在寻找的选项。

1 个答案:

答案 0 :(得分:0)

我认为不可能通过XML资源将entriesentryValues合并为一个。我的推理来自Chet Haase's Developing for Android series

  

避免使用对象数组:如果您有一个简单的普通旧数据对象数组,请为每个字段考虑一个数组。例如,假设您有一个绘图应用程序需要跟踪先前触摸X / Y点数据的列表。而不是存储一个Point []数组,而是考虑存储两个int []数组,一个用于X,一个用于Y.这不仅减少了原始对象数(从而减少了内存开销),而且还增加了数据局部性并更好地利用了宝贵的内存带宽和CPU缓存空间。

两个原始数组优先于一个对象数组。如果Android工程师在构建时考虑到了这一点,那么他们就不会构建entriesentryValues的组合方式。