E enviando esse array para o métodopreencheComboClientes
Agora a minha necessidade é de pegar desse array, os objetos {} que existem dentro dele e de cada objeto, pegar os atributos id e nome de preencher uma ArrayList para popular um Spinner
Estou tentando como abaixo mas não está funcionando.
private void preencheComboClientes(JSONArray jsClientes) throws JSONException {
ArrayList<JSONObject> arrayListClientes = new ArrayList<JSONObject>();
for (int i = 0; i < jsClientes.length(); i++) {
JSONObject cliente = new JSONObject();
cliente.put("id", jsClientes.getJSONObject("cliente").getInt("id"));
cliente.put("nome", jsClientes.getJSONObject("cliente").getString("nome"));
arrayListClientes.add(cliente);
}
ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, arrayListClientes);
spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spCliente.setAdapter(spinnerArrayAdapter);
}
Tem alguma coisa errada e não estou conseguindo descobrir como se faz.
Primeiramente, se você estudou um mínimo de java sabe que o padrão de nomes para atributos, parâmetros e métodos é minúsculo, né? Apenas classes e constantes podem ter nomes em maiúsculo. Embora o código até compile e rode, fica feio e com legibilidade prejudicada.
Segundo, JSONArray e JSONObject são classes bem poderosas, mas, nem sempre atendem ao que esperamos.
Não seria viável converter, utilizando Gson ou alguma biblioteca similar, esse array para uma lista de objetos que já representem estes dados recebidos?
Vamos lá, consegui criar um Arralist com par de valores
**id:valor, ** nome:valor
Meu objetivo agora é conseguir criar um Spinner ou talvez outro componente que m permita imitar o Select Option do HTML
private void preencheComboClientes(JSONArray jsClientes) throws JSONException {
ArrayList<JSONObject> lista = new ArrayList<JSONObject>();
for (Integer i = 0; i < jsClientes.length(); i++) {
JSONObject jsonObject = new JSONObject();
JSONObject cliente = new JSONObject();
jsonObject = jsClientes.getJSONObject(i).getJSONObject("cliente");
cliente.put("id",jsonObject.getString("id"));
cliente.put("nome",jsonObject.getString("nome"));
lista.add(cliente);
}
ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, lista);
spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spCliente.setAdapter(spinnerArrayAdapter);
}
A ArrayList lista me retorna algo como
[
{
“id”:“1”,
“nome”:“Carlos”
},
{
“id”:“45”,
“nome”:“Cleonice Rocha”
}
]
Pode me ajudar com esse adptater?
Pois do jeito que estou fazendo não funciona!