@gamess431

3 вопроса по работе с json в java, как решить данную задачу?

У меня несколько трудностей, которые я не смог решить самостоятельно, обо всем по порядку.
Есть 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);

результат!

87lys.jpg

Код работает, но не совсем корректно.

Вернемся к вопросам.


  1. Список стран в ListView выходит по порядку, как написано в Json файле, как сделать, чтобы показывал по алфавиту от А до Я?


  2. Когда я выбираю из списка какую-нибудь страну, в Editext (TextInputLayout) возвращается весь объект {Unicode=, Dial=+7, Name=Russia} Как вывести только название выбранной страны?


  3. Как получить страну автоматически в поле Выбор страны, когда пользователь вводит код страны в поле Код страны и наоборот?



Er49Z.jpg

Любая помощь приветствуется.
  • Вопрос задан
  • 157 просмотров
Пригласить эксперта
Ответы на вопрос 2
azerphoenix
@azerphoenix Куратор тега Java
Java Software Engineer
если вы заметили список стран в ListView выходят по порядку как написано а Json file так вот, как сделать так чтобы показывал по алфавиту от А до Я ?

После десериализации данных, отсортируйте данные

когда я выбираю из список какую нибудь страну то мне в Editext (TextInputLayout) возвращает весь объект, а мне нужен вывести только названия выбранного страну

Ну значит, вам нужно либо геттером получить название, либо можно десериализовать в другой объект, в котором только название.

как мне получить страну автоматический в поля Выбор стран, когда пользователь вводит код страну в поля где вводится Код страна и наоборот !?

Если я вас правильно понимаю, то вы имеете ввиду fuzzy search. Т.е. сквозной поиск.
Ответ написан
Jacen11
@Jacen11
Никогда бы не подумал, что когда нибудь скажу это, но учи структуры данных! Нахрена ты делаешь список хешмап с тремя элементами!
Теперь по твоим вопросам
список стран в ListView выходят по порядку как написано а Json file так вот, как сделать так чтобы показывал по алфавиту от А до Я ?
очевидно нужно вначале отсортировать этот список

когда я выбираю из список какую нибудь страну
и где код который это обрабатывает? Хотя ответ уже будет очевиден, передавай только страну, а не все

как мне получить страну автоматический в поля Выбор стран, когда пользователь вводит код страну в поля где вводится Код страна и наоборот !?
у тебя же даже все данные для этого есть, просто берешь и подставляешь, в чем проблема?

ЗЫ ты хоть читаешь что пишешь? что это за море опечаток? тут тебе не дешифровщики сидят
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы