У меня несколько трудностей, которые я не смог решить самостоятельно, обо всем по порядку.
Есть json file, который я показываю в
ListView,
и он выглядит следующим образом:
countryData.json
{
"CountryData": [
{
"Name": "Bangladesh",
"Unicode": "",
"Dial": "880"
},
{
"Name": "Belgium",
"Unicode": "",
"Dial": "32"
}...
]
}
java code
ArrayList<HashMap<String, String>> arrayList = new ArrayList<>();
JSONObject jsonObject;
JSONArray jsonArray;
String jsonFile;
String unicode;
String name;
String dial;
try {
InputStream stream = getAssets().open("json/countryData.json");
int size = stream.available();
byte[] buffer = new byte[size];
stream.read(buffer);
stream.close();
jsonFile = new String(buffer);
jsonObject = new JSONObject(jsonFile);
jsonArray = jsonObject.getJSONArray("CountryData");
for (int i = 0; i < jsonArray.length(); i++) {
jsonObject = jsonArray.getJSONObject(i);
unicode = jsonObject.getString("Unicode");
name = jsonObject.getString("Name");
dial = jsonObject.getString("Dial");
HashMap<String, String> hashMap = new HashMap<>();
hashMap.put("Unicode", unicode);
hashMap.put("Name", name);
hashMap.put("Dial", "+"+dial);
arrayList.add(hashMap);
}
} catch (JSONException | IOException e) {
Toast.makeText(getApplicationContext(), "json file is not found", Toast.LENGTH_LONG).show();
}
адаптер, который передает данные в ListView
adapter = new SimpleAdapter(
LoginActivity.this,
arrayList,
R.layout.simple_layout,
new String[]{"Unicode", "Name", "Dial"},
new int[]{R.id.countryUnicode,R.id.countryName, R.id.countryCodeList}
);
selectCountry.setAdapter(adapter);
результат!
Код работает, но не совсем корректно.
Вернемся к вопросам.
Список стран в ListView выходит по порядку, как написано в Json файле, как сделать, чтобы показывал по алфавиту от А до Я?
Когда я выбираю из списка какую-нибудь страну, в Editext (TextInputLayout)
возвращается весь объект {Unicode=, Dial=+7, Name=Russia}
Как вывести только название выбранной страны?
Как получить страну автоматически в поле Выбор страны, когда пользователь вводит код страны в поле Код страны и наоборот?
Любая помощь приветствуется.