2013-03-19 109 views
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,我會得到item2的名稱和值。
任何幫助,將不勝感激。

+1

嘗試使用XML解析器 – BobTheBuilder 2013-03-19 10:02:12

+0

您可以嘗試使用另一個simplexmlframework來處理您的問題 – 2013-03-19 10:07:46

+1

如果您使用的字符串數組不會更改,爲什麼不使用兩個數組 - 一個用於項目名稱,另一個用於文本被搜索。當匹配發生時,您可以使用索引獲取相應的名稱。 – Akash 2013-03-19 10:17:20

回答

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這可能不是最好的辦法。所以如果有人有想法或改進,我會很感激。

0

我的建議是java.util.Arrays中具有的binarySearch方法aceepting多個選項,這將幫助用戶界面想到,

Arraysapi

相關問題