0

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

4

2 回答 2

0

我的建议是 java.util.Arrays 有 binarysearch 方法可以接受多个选项,这将有助于 ui 思考,

Arraysapi

于 2013-03-19T10:29:31.387 回答
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..           
                }
            }

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

于 2013-03-19T11:55:51.217 回答