如何搜索字符串数组并返回数组中项的名称?

时间:2013-03-19 10:00:57

标签: java android search arrays

我是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”的名称以及值 任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

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

Arraysapi

答案 1 :(得分:0)

好吧,感谢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这可能不是最好的方法。所以,如果有人有想法或改进,我真的很感激。