Двумерный массив в ресурсы Android

Можно ли как-то сделать двумерный массив в ресурсах Android?

Хотелось бы сделать что-то по типу такого. И, если этого нельзя сделать в ресурсах то как лучше сделать константу с тем же текстом ? Спасибо )

<array name="Themes">
        <array name="ru">
                <item>
                        <item>1</item>
                        <item>Светлая Тема</item>
                        <item>Автор</item>
                </item>
        </array> 
        <array name="en">
                <item>
                        <item>1</item>
                        <item>White Theme</item>
                        <item>Author</item>
                </item>
        </array> 
</array> 

На счет вариантов с локализациями не стоит писать т.к. про это знаю и это не то что мне нужно.


Ответы (1 шт):

Автор решения: Andrew

Один из вариантов - сделать json в ресурсах у которого не будет переводов. Таким образом вы сможете в него записать что угодно и потом распарсить если что. Будет это выглядеть приблизительно так:

{"ru":
{
"some_number": "1",
"color": "Светлая Тема",
"author": "Автор"
},
"en":
{...}}

дальше вы получаете этот объект из ресурсов:

JSONObject obj= new JSONObject(resouses.getString(R.string.someName));

ну и дальше в зависимости от языка тянете то что вам нужно:

JSONObject sys  = obj.getJSONObject("ru");
String number = sys.getString("soome_number");

так же есть второй вариант обработки данного json - используя класс-модель. Создаем класс модель (тул):

public class Model{

private String someNumber;
private String color;
private String author;

public String getSomeNumber() {
return someNumber;
}

public void setSomeNumber(String someNumber) {
this.someNumber = someNumber;
}

public Ru withSomeNumber(String someNumber) {
this.someNumber = someNumber;
return this;
}

public String getColor() {
return color;
}

public void setColor(String color) {
this.color = color;
}

public Ru withColor(String color) {
this.color = color;
return this;
}

public String getAuthor() {
return author;
}

public void setAuthor(String author) {
this.author = author;
}

public Model withAuthor(String author) {
this.author = author;
return this;
}

}

дальше вытаскиваем нужный язык из ресурса:

String jsonText = obj.getJSONObject("ru").toString()

и обрабатываем (туториал):

GsonBuilder builder = new GsonBuilder();
Gson gson = builder.create();
Model model = new GsonBuilder().create().fromJson(jsonText, Model.class);

и дальше можно работать с объектом класса model.

→ Ссылка