Сравнивать и возвращать строковые значения в строковый массив в Xml Android

#android

#Android

Вопрос:

Добрый день, я постараюсь объяснить свою проблему как можно лучше. у меня в одном из моих классов есть геттеры и сеттеры для строкового объекта. Теперь в моем методе getString() я пытаюсь сравнить строку со строковым массивом элементов в моем String.xml чтобы проверить, соответствует ли какой-либо из элементов в файле string-array заданной строке, и вернуть соответствующий элемент item в string array.

У меня пока что есть что-то вроде этого:

для 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>
  

причина, по которой я должен это сделать, заключается в том, что он имеет разные значения для языков (языков), и это было бы намного проще, чем писать огромный список операторов if / else или switch для разных строковых элементов и языков. Пожалуйста, любые идеи высоко ценятся. Спасибо

Ответ №1:

Проверьте этот код на получение значения из 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
        }

    }
  

Ответ №2:

Вы должны просто перебирать возвращаемый массив, выполняя a place.equals для каждого элемента в этом массиве, и возвращать совпадение, когда они совпадают.

Если они отсортированы (в данном случае их нет), вы могли бы использовать Arrays.binarySearch . Вы также можете использовать Arrays.asList и вызывать contains(place) результирующий список, что по сути то же самое, что и цикл вручную.

Вам нужно будет решить, что возвращать, если совпадений нет (если это вообще возможно).