Задать вопрос
@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

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

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

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

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

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

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

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

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

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

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

Похожие вопросы