【问题标题】:Is common values shared across String-Array possible in Android XML?是否可以在 Android XML 中跨 String-Array 共享公共值?
【发布时间】:2016-01-11 02:17:52
【问题描述】:

对于我的 Android 开发,我有 2 个数组,除了下面的第一个值和最后一个值外,它们完全相同。

<string-array name="minvalues">
    <item>Any Value</item>
    <item>100</item>
    <item>200</item>
    <item>300</item>
</string-array>

<string-array name="maxvalues">
    <item>100</item>
    <item>200</item>
    <item>300</item>
    <item>Any Value</item>
</string-array>

我在想有没有办法将常用值(即 100、200、300)定义为另一个数组,并从中包含 minvaluesmaxvalues include,这样我们就可以在minvaluesmaxvalues 之间共享共同的价值观。这在 Android 数组 xml 中是否可行?

【问题讨论】:

    标签: android android-xml android-resources


    【解决方案1】:

    我不认为有,因为值是字符串,您需要手动将它们转换为整数,以便使用查找常用值

    String[] minValues = getResources().getStringArray(R.array.minvalues);
    String[] maxValues = getResources().getStringArray(R.array.maxvalues);
    

    然后用

    将它们转换成 int
    int[] minValsInt = Arrays.asList(minValues).stream().mapToInt(Integer::parseInt).toArray();
    int[] maxValuesInt = Arrays.asList(maxValues).stream().mapToInt(Integer::parseInt).toArray();
    

    现在您可以遍历每一个并获取共同值。

    编辑 这是从此post获取重复项的方法

    void findDupes(int[] a, int[] b) {
    HashSet<Integer> map = new HashSet<Integer>();
    for (int i : a)
        map.add(i);
    for (int i : b) {
        if (map.contains(i))
            // found duplicate!    
    } 
    

    }

    干杯

    【讨论】:

    • Android 现在支持 JDK 8 了吗?
    • 谢谢雪人。对不起,我的问题不够清楚。我的问题不是找到共同点,但不是写共同数组,并且有 2 个数组包含它,其中一个将插入 ANY 作为第一个值,第二个将包含 ANY 作为最后一个值。我想在资源 XML 中执行此操作。我已经编辑了我的问题,将“解耦”一词更改为“定义”。希望这现在更清楚了。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-19
    • 2012-11-08
    • 2010-09-21
    • 1970-01-01
    • 2017-02-11
    • 2011-04-30
    相关资源
    最近更新 更多