我是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”的名称以及值
任何帮助将不胜感激。
答案 0 :(得分:0)
我的建议是java.util.Arrays有二元搜索方法接受多个选项,这将有助于你认为,
答案 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这可能不是最好的方法。所以,如果有人有想法或改进,我真的很感激。