Двумерный массив в ресурсы 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 шт):
Один из вариантов - сделать 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.