I'm using 2 activities to parse a Json, in the first activity I pass the name and when I tap on it, it shows me its contacts, and as you can see I have an array of "contatos" with 2 objects.
{
"total": 1,
"dados": [
{
"id": "9",
"id_rm_empresa": "2",
"id_rm_tipo_cliente": "1",
"tipo_pessoa": "PJ",
"cpf": null,
"nome": "Microsoft",
"cnpj": null,
"ie": null,
"suframa": null,
"ramo_de_atividade": null,
"ano_de_fundacao": null,
"informacoes_adicionais": "informação do clientes",
"enderecos": [
{
"id_rm_endereco": "21",
"endereco": "Rua Rudolph Diesel",
"numero": "174",
"complemento": "",
"bairro": "Industrial",
"cep": "86063-330",
"cidade": "Londrina",
"estado": "Paraná",
"tipo_endereco": "Residencial",
"criado": "2013-09-01 07:00:00",
"modificado": "2013-09-03 18:30:31",
"status": "A"
},
{
"id_rm_endereco": "56",
"endereco": "Rua Pará",
"numero": "1500",
"complemento": "5 andar",
"bairro": "Centro",
"cep": "86020-400",
"cidade": "Londrina",
"estado": "Paraná",
"tipo_endereco": "Comercial",
"criado": "2013-09-01 07:00:00",
"modificado": "2013-09-03 18:30:36",
"status": "A"
}
],
"contatos": [
{
"id_rm_cliente": "10",
"id_rm_contato": "1",
"id_rm_empresa": "2",
"nome": "Bill Gates",
"cargo": "Diretor",
"telefones": [
{
"id_rm_cliente": "10",
"id_rm_contato": "1",
"id_rm_telefone": "4",
"id_rm_empresa": "2",
"tipo": "Trabalho",
"numero": "(22) 2222-2222",
"criado": "2013-09-01 07:00:00",
"modificado": "2013-09-03 18:30:32",
"status": "A"
},
{
"id_rm_cliente": "10",
"id_rm_contato": "1",
"id_rm_telefone": "9",
"id_rm_empresa": "2",
"tipo": "Celular",
"numero": "(44) 4444-4444",
"criado": "2013-09-01 07:00:00",
"modificado": "2013-09-03 18:30:30",
"status": "A"
}
],
"emails": [
{
"id_rm_cliente": "10",
"id_rm_contato": "1",
"id_rm_email": "5",
"id_rm_empresa": "2",
"tipo": "Trabalho",
"email": "[email protected]",
"criado": "2013-09-01 07:00:00",
"modificado": "2013-09-03 18:30:30",
"status": "A"
}
],
"criado": "2013-09-01 07:00:00",
"modificado": "2013-09-03 18:30:30",
"status": "A"
},
{
"id_rm_cliente": "10",
"id_rm_contato": "7",
"id_rm_empresa": "2",
"nome": "Linus Torvalds",
"cargo": "Diretor",
"telefones": [
{
"id_rm_cliente": "10",
"id_rm_contato": "1",
"id_rm_telefone": "4",
"id_rm_empresa": "2",
"tipo": "Trabalho",
"numero": "(22) 2222-2222",
"criado": "2013-09-01 07:00:00",
"modificado": "2013-09-03 18:30:30",
"status": "A"
}
],
"emails": [
{
"id_rm_cliente": "10",
"id_rm_contato": "1",
"id_rm_email": "5",
"id_rm_empresa": "2",
"tipo": "Trabalho",
"email": "[email protected]",
"criado": "2013-09-01 07:00:00",
"modificado": "2013-09-03 18:30:30",
"status": "A"
}
],
"criado": "2013-09-01 07:00:00",
"modificado": "2013-09-03 18:30:32",
"status": "A"
}
],
"telefones": [
{
"id_rm_empresa": "2",
"id_rm_cliente": "10",
"id_rm_telefone": "1",
"numero": "(43)3025-1355",
"tipo": "Casa",
"criado": "2013-09-01 07:00:00",
"modificado": "2013-09-03 18:30:30",
"status": "A"
},
{
"id_rm_empresa": "2",
"id_rm_cliente": "10",
"id_rm_telefone": "2",
"numero": "(43)3000-6562",
"tipo": "Trabalho",
"criado": "2013-09-01 07:00:00",
"modificado": "2013-09-03 18:30:33",
"status": "A"
}
],
"emails": [
{
"id_rm_cliente": "10",
"id_rm_contato": "1",
"id_rm_email": "82",
"id_rm_empresa": "2",
"tipo": "Trabalho",
"email": "[email protected]",
"criado": "2013-09-01 07:00:00",
"modificado": "2013-09-03 18:30:30",
"status": "A"
},
{
"id_rm_cliente": "10",
"id_rm_contato": "1",
"id_rm_email": "12",
"id_rm_empresa": "2",
"tipo": "Trabalho",
"email": "[email protected]",
"criado": "2013-09-01 07:00:00",
"modificado": "2013-09-03 18:30:30",
"status": "A"
}
],
"criado": "2013-09-01 07:00:00",
"modificado": "2012-09-04 18:30:37",
"status": "A"
}
]
}
Here is How I'm parsing the Json:
JSONArray dados = json.getJSONArray("dados");
feedList = new ArrayList<ClientesModel>();
contatoList = new ArrayList<ClientesContatosModel>();
// parsing json object
for (int i = 0; i < dados.length(); i++) {
JSONObject item = dados.getJSONObject(i);
ClientesModel mClientesModel = new ClientesModel();
mClientesModel.setId_rm(item.optInt("id"));
mClientesModel.setNome(item.optString("nome"));
mClientesModel.setTipo_pessoa(item.optString("tipo_pessoa"));
mClientesModel.setInformacoes_adicionais(item.optString("informacoes_adicionais"));
mClientesModel.setCpf(item.optString("cpf"));
mClientesModel.setCnpj(item.optString("cnpj"));
feedList.add(mClientesModel);
JSONArray contatos = item.getJSONArray("contatos");
for (int j = 0; j < contatos.length(); j++) {
JSONObject data = contatos.getJSONObject(j);
ClientesContatosModel mClientesContatoModel = new ClientesContatosModel();
mClientesContatoModel.setId_rm(data.optInt("id_rm_cliente"));
mClientesContatoModel.setNomeContato(data.optString("nome"));
mClientesContatoModel.setCargo(data.optString("cargo"));
contatoList.add(mClientesContatoModel);
}
}
And here is how I'm passing the information to another activity:
public void updateList() {
feedListView= (ListView) findViewById(R.id.custom_list);
feedListView.setVisibility(View.VISIBLE);
progressbar.setVisibility(View.GONE);
feedListView.setAdapter(new CustomListAdapter(this, feedList));
final ListView V = (ListView) findViewById(R.id.contato_list);
//V.setVisibility(View.VISIBLE);
V.setAdapter(new ContatosListAdapter(this, contatoList));
feedListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> a, View v, int position, long id) {
ClientesContatosModel newsData = contatoList.get(position);
System.out.println(newsData);
Intent intent = new Intent(FeedListActivity.this, FeedDetailsActivity.class);
intent.putExtra("feed", newsData);
startActivity(intent);
}
});
}
Here is what is happening:
!
it is not showing the second contact of the array.