2011-11-02 224 views
1

美好的一天,我會盡我所能解釋我的問題。我在我的一個類中有一個getters和setter,用於一個字符串對象。現在在我的getString()方法中,我試圖將字符串與我的String.xml中的字符串數組進行比較,以查看字符串數組文件中的任何元素是否與給定字符串匹配並返回匹配的元素元素在字符串數組中。比較並返回字符串值到Xml中的字符串數組Android

我有這樣的事情至今:

爲setPlace():

public void setPlace(String place) { 

this.place = place; 
    } 

爲getPlace():

 public String getPlace() { 

     //am stuck here and not sure how to compare this and return the correct item 

    if(place.equals(context.getResources().getStringArray(R.array.myPlacesArray))){ 

       //return context.getResources().getString();   
      } 

我的strings.xml文件:

<string-array name="myPlacesArray"> 
    <item>@string/myplace1</item> 
    <item>@string/myPlace2</item> 
    <item>@string/myPlace3</item> 
</string-array> 

<string name="myplace1">home</string> 
<string name="myplace2">office</string> 
<string name="myplace3">gym</string> 

我必須做的原因是因爲它具有不同的語言環境(語言)值,並且比爲不同的String元素和語言編寫大量if/else或switch語句要容易得多。請高度讚賞任何想法。謝謝

回答

0

檢查這個代碼從String.xml獲得價值和比較:

String[] categoriesAndDescriptions =getResources().getStringArray(R.array.myPlacesArray); 
    for(String cad : categoriesAndDescriptions) { 
     String categoryAndDesc = cad; 
     Log.v("CategoryName", categoryAndDesc); 
     if(place.equalsIgnoreCase(categoryAndDesc)){ 
     //Do your Stuffs here 
     } 

    } 
0

您應該循環返回數組,對數組中的每個項目執行place.equals,並在匹配時返回匹配項。

如果他們排序(他們不在這種情況下),你可以使用Arrays.binarySearch。您也可以使用Arrays.asList並在結果列表上調用contains(place),這與手動循環基本相同。

如果沒有匹配(如果甚至可能的話),你需要決定返回什麼。