#android #xml #string #android-resources #jsonresponse
Вопрос:
Как создать string.xml файл программно в файле ресурсов в проекте Android studio
например
"languageKeys": [
{
"key": "welcome_screen_title",
"value": "ZervBee"
},
{
"key": "skip_button",
"value": "தவிர்"
},
{
"key": "walkthrough_title_1",
"value": "மேசையிலிருந்து ஆர்டர்"
},
{
"key": "walkthrough_title_2",
"value": "ஆன்லைனில் பணம் செலுத்துங்கள்"
},
{
"key": "walkthrough_title_3",
"value": "வரிசைகளை தவிர்க்கவும்"
},
{
"key": "walkthrough_desc_1",
"value": "இப்போது நீங்கள் உங்கள் மேஜையில் இருந்து உணவை ஆர்டர் செய்யலாம்"
},
{
"key": "walkthrough_desc_2",
"value": "மாற்றத்தைப் பற்றி ஒருபோதும் கவலைப்பட வேண்டாம், ஆர்டர் செய்யும் போது சரியான தொகையை செலுத்துங்கள்"
},
{
"key": "walkthrough_desc_3",
"value": "வரிசையில் நிற்பதைத் தவிர்க்கவும், உங்கள் ஆர்டர் தயாராக இருக்கும்போது நாங்கள் அறிவிப்போம்"
},
{
"key": "choose_langauge_title",
"value": "மொழியை தேர்வு செய்யவும்"
},
{
"key": "my_cart",
"value": "என் வண்டி"
}
]
Это был ответ от API, который находится в формате JSON. Я конвертирую ответ в формат xml.
Как сохранить этот xml-файл в виде строки file.xml в ресурсах. Есть ли у них какой-либо способ преобразовать его.
Заранее спасибо
Комментарии:
1. не могли бы вы, пожалуйста, отредактировать свой вопрос, чтобы точно указать, чего вы здесь пытаетесь достичь? Примеры были бы полезны.
Ответ №1:
Файл string.xml
-это файл ресурсов. Как и любой другой файл ресурсов, эти файлы не могут быть изменены во время выполнения. Если быть более точным, любой файл в res
папке не может быть изменен во время выполнения, например string.xml
drawables
, values.xml
и т. Д.
В идеале вы можете проанализировать и сохранить свой ответ в a SharedPrefernce
или, возможно, настроить local db
использование Rooom
.
Ответ №2:
Файлы ресурсов используются во время сборки (одностороннее использование / только для чтения). Вы неправильно понимаете их цель.
Вы можете просто загрузить (десериализовать) ответ JSON в объект Java с помощью GSON и т. Д.
Подготовьте класс LanguageKey для десериализации:
public class LanguageKey {
public final String key;
public final String value;
public LanguageKey(String key, String value) {
this.key = key;
this.value = value;
}
}
Пример основной активности:
public class MainActivity extends AppCompatActivity {
private static final String JSON = "["
"{"
""key": "welcome_screen_title","
""value": "ZervBee""
"},"
"{"
""key": "skip_button","
""value": "தவிர்""
"}"
"]";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// deserialize using GSON
List<LanguageKey> languageKeys = new Gson().fromJson(
JSON, new TypeToken<List<LanguageKey>>(){}.getType()
);
// Now, you can use languageKeys object directly
for (LanguageKey languageKey: languageKeys) {
Log.d("LanguageKey", String.format(
"key: %s; value: %s",
languageKey.key, languageKey.value
));
}
}
}
Примечание: ваш JSON недействителен. Возможно, вам потребуется удалить "languageKeys":
его перед обработкой.
Комментарии:
1. Спасибо, что ответили на мой вопрос. Моя цель динамически использовать строковый файл зависит от ответа json. Нет необходимости изменять строковое значение вручную. Есть ли у них какой-либо способ или какие-либо другие альтернативные варианты
2. @Суманрадхакришнан Одним из других способов является десериализация.