【问题标题】:How to search string array and return name of the item in the array?如何搜索字符串数组并返回数组中项目的名称?
【发布时间】:2013-03-19 10:00:57
【问题描述】:

我是 Android 编程新手。
好的,现在我有一个这样的字符串数组:

<string-array name="mStrArray">
    <item name="item1a">text to be searched no1</item>
    <item name="item1b">text to be searched no2</item>
    <item name="item2a">text to be searched no3</item>
    <item name="item2b">text to be searched no4</item>
</string-array>

我像这样搜索数组,并将结果返回到列表适配器中:

String[] names = getResources().getStringArray(R.array.mStrArray);
        for (String s : names) {
            int i = s.indexOf(searchKeyword);
            if (i >= 0) {
               //add results to listview adapter
               countryList.add(new Country(s, ""));
            }
        }

我的问题是,我找不到方法来获取从中找到结果的数组中的项目名称。
所以在这个例如。如果我搜索 no3,我会得到项目“item2a”的名称以及值。
任何帮助将不胜感激。

【问题讨论】:

  • 你可以尝试使用另一个simplexmlframework来处理你的问题
  • 如果您正在使用您知道不会更改的字符串数组,为什么不只使用两个数组 - 一个用于项目名称,一个用于要搜索的文本。当匹配发生时,您可以使用索引获取相应的名称。
  • @akashasia 谢谢,这是个好主意,我会努力做到的。

标签: java android search arrays


【解决方案1】:

我的建议是 java.util.Arrays 有二进制搜索方法接受多个选项,我认为这将帮助你,

Arraysapi

【讨论】:

    【解决方案2】:

    好的,多亏了 akashasia,我设法找到了一个解决方案,它不是很优雅,但至少现在可以使用。
    所以这就是我所做的:
    我制作了 2 个数组,如 akashasia 所说,1 个用于项目名称,1 个用于要搜索的文本,如下所示:

    <string-array name="mStrArray">
        <item>text to be searched no1</item>
        <item>text to be searched no2</item>
        <item>text to be searched no3</item>
        <item>text to be searched no4</item>
    </string-array>
    
    <string-array name="mStrArrayValues">
        <item>item1a</item>
        <item>item1b</item>
        <item>item2a</item>
        <item>item2b</item>
    </string-array>
    

    我把代码改成了这样:

    String[] arrB = getResources().getStringArray(R.array.mStrArray);
        for (String s : arrB) {
            int i = s.indexOf(searchKeyword);
            if (i >= 0) {
                 int position = -1;
                 for(int j = 0; j < arrB.length; j++) {
                    if(arrB[j] == s) {
                        position = j;
                        break;
                    }
            }
    
            ..
            String[] arrBV = getResources().getStringArray(R.array.mStrArrayValues);
    
            //finally I got the name of the value :-D
            String mySc = arrBV[position];
            //some code..           
                    }
                }
    

    P.S 这可能不是最好的方法。因此,如果有人有想法或改进,我将不胜感激。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-30
      • 2021-09-27
      • 2013-06-13
      • 1970-01-01
      • 1970-01-01
      • 2021-04-28
      相关资源
      最近更新 更多