美好的一天,我会尽力解释我的问题。我在我的一个类,getter和setter中有一个字符串对象。现在在我的getString()方法中,我试图将字符串与String.xml中的字符串数组进行比较,以查看字符串数组文件中的任何元素是否与给定字符串匹配并返回匹配的item元素在字符串数组中。
到目前为止我有这样的事情:
for setPlace():
public void setPlace(String place) {
this.place = place;
}
for 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 :(得分:0)
你应该循环遍历返回的数组,对该数组中的每个项目执行place.equals
,并在匹配时返回匹配。
如果他们已经排序(他们不是这种情况),您可以使用Arrays.binarySearch
。您还可以使用Arrays.asList
并在结果列表中调用contains(place)
,这与手动循环基本相同。
如果没有匹配(如果可能的话),您需要决定返回什么。
答案 1 :(得分: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
}
}