Цикл JSONObject и динамическое заполнение счетчика - PullRequest
0 голосов
/ 27 октября 2019

Я использую библиотеку залпов на Android, и мне нужно проанализировать этот JSON и заполнить мой счетчик некоторыми значениями, полученными из ответа залпа, которые вложены в другой объект json.

Здесь JSON:

{
"Count": 2,
"0": {
    "Distributore Information": {
        "id_distributore": "1",
        "NomeDistributore": "Colonnina 1",
    }
},
"1": {
    "Distributore Information": {
        "id_distributore": "2",
        "NomeDistributore": "Colonnina 2",
    }
}
}

Вот код, который я пишу:

private void getInfoColonnina(){
    String url = "https://api.thisurlsidhiddenbutitsworknp_module_json";
    final SharedPreferences myPref = getSharedPreferences("loginPref", MODE_PRIVATE);
    final SharedPreferences.Editor myPreff = myPref.edit();

    RequestQueue requestQueue = Volley.newRequestQueue(this);
    StringRequest stringRequest = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {
            Toast.makeText(InizioTurnoActivity.this, "CHIAMATA INFOCOLONNINA AVVENUTA CON SUCCESSO", Toast.LENGTH_SHORT).show();
            try {
                JSONObject jsonObject = new JSONObject(response);
                Iterator<String> keys = jsonObject.keys();

                while(keys.hasNext()) {
                    String key = keys.next();
                    if (jsonObject.get(key) instanceof JSONObject) {

                        JSONObject infoDistributore = jsonObject.getJSONObject("Distributore Information");
                        LitriColonnina = infoDistributore.getString("litriiniziocolonna");
                        id_distributore = infoDistributore.getString("id_distributore");
                        NomeDistributore = infoDistributore.getString("NomeDistributore");
                    }
                }

                    final DistrBean distrTest = new DistrBean(NomeDistributore, id_distributore, LitriColonnina);

                    MaterialSpinner spinner = (MaterialSpinner) findViewById(R.id.spinner);
                    spinner.setItems(distrTest.getNomeDistributore());
                    spinner.setOnItemSelectedListener(new MaterialSpinner.OnItemSelectedListener<String>() {
                        @Override public void onItemSelected(MaterialSpinner view, int position, long id, String item) {
                            Toast.makeText(InizioTurnoActivity.this, distrTest.getIdDistributore(), Toast.LENGTH_SHORT).show();
                            myPreff.putString("id_distributore", distrTest.getIdDistributore());
                            myPreff.commit();
                        }
                    });

            } catch (JSONException e) {
                e.printStackTrace();
            }

Поэтому код должен повторяться и создавать объект, который заполняет счетчик, но не работает. Если я анализирую только один объект и заполняю счетчик, он отлично работает и выглядит так же, но я действительно не могу понять, как в цикле через JSON получить все данные, которые мне нужны, каждый «id_distributore» и «NomeDistributore», любая идея?

Спасибо заранее!

1 Ответ

0 голосов
/ 28 октября 2019

Вы должны использовать ArrayAdapter для spinner, затем добавить свой элемент к ArrayAdapter, используя List

Так что добавляйте свои элементы динамически в List, а затем после for loop введите list в ArrayAdapter, наконец, установите adapter в spinner

Пример:

ArrayAdapter<String> arrayAdapter;
arrayAdapter= new ArrayAdapter<String>(this, R.layout.spinner_indication, yourList); //yourList is the List your create dynamically in the for loop with the elements from the Json file
Spinner yourSpinner;
yourSpinner.setAdapter(arrayAdapter);

Helpfull:

Также вы можете добавить другие элементы к вашему счетчику после этого, добавив эти элементы в список, кроме используемого адаптера:

arrayAdapter.notifyDataSetChanged();

РЕДАКТИРОВАТЬ:

Ваш JSON-файл отформатирован неправильно, он должен выглядеть следующим образом:

{
    "Count": "2",
  "0": {
    "Distributore Information": {
      "id_distributore": "1",
      "NomeDistributore": "Colonnina 1"
    }
  },
  "1": {
    "Distributore Information": {
      "id_distributore": "2",
      "NomeDistributore": "Colonnina 2"
    }
  }
}

В вашем php-файле используйте:

echo json_encode($response); //response in array containing your fetched data

проверьте свой Json здесь

...