比较并返回字符串值到Xml中的字符串数组Android
问题描述:
美好的一天,我会尽我所能解释我的问题。我在我的一个类中有一个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语句要容易得多。请高度赞赏任何想法。谢谢
答
检查这个代码从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
}
}
答
您应该循环返回数组,对数组中的每个项目执行place.equals
,并在匹配时返回匹配项。
如果他们排序(他们不在这种情况下),你可以使用Arrays.binarySearch
。您也可以使用Arrays.asList
并在结果列表上调用contains(place)
,这与手动循环基本相同。
如果没有匹配(如果甚至可能的话),你需要决定返回什么。