我正在尝试在listview中打印“contatos”数组,而我正在尝试在另一个活动中执行此操作,问题是,我已经为它创建了另一个适配器,但是在这一行中代码“ClientesContatosModel md = arrContatos.get(i);”它应该从ContatosView中的适配器获取“i”,我该怎么做?
我的杰森:
{"total":3,"dados":[{"id":"9","id_rm_empresa":"2","id_rm_tipo_cliente":"1","tipo_pessoa":"PJ","cpf":null,"nome":"Apple","cnpj":null,"ie":null,"suframa":null,"ramo_de_atividade":null,"ano_de_fundacao":null,"informacoes_adicionais":null,"enderecos":[{"id_rm_endereco":"1","endereco":"Rua Rudolph Diesel","numero":"174","complemento":"","bairro":"Industrial","cep":"86063-330","cidade":"Londrina","estado":"Paran\u00e1","tipo_endereco":"Residencial"}],"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:30","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":"steve@apple-teste.com","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":"steve@apple-teste.com","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"}],"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:30","status":"A"}],"emails":[],"criado":"2013-09-01 07:00:00","modificado":"2012-09-04 18:30:34","status":"A"},{"id":"8","id_rm_empresa":"2","id_rm_tipo_cliente":"1","tipo_pessoa":"PJ","cpf":null,"nome":"Apple","cnpj":null,"ie":null,"suframa":null,"ramo_de_atividade":null,"ano_de_fundacao":null,"informacoes_adicionais":null,"enderecos":[{"id_rm_endereco":"1","endereco":"Rua Rudolph Diesel","numero":"174","complemento":"","bairro":"Industrial","cep":"86063-330","cidade":"Londrina","estado":"Paran\u00e1","tipo_endereco":"Residencial"}],"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:30","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":"steve@apple-teste.com","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":"steve@apple-teste.com","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"}],"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:30","status":"A"}],"emails":[],"criado":"2013-09-01 07:00:00","modificado":"2012-09-04 18:30:34","status":"A"},{"id":"10","id_rm_empresa":"2","id_rm_tipo_cliente":"1","tipo_pessoa":"PJ","cpf":null,"nome":"Webee","cnpj":null,"ie":null,"suframa":null,"ramo_de_atividade":null,"ano_de_fundacao":null,"informacoes_adicionais":null,"enderecos":[{"id_rm_endereco":"1","endereco":"Rua Rudolph Diesel","numero":"174","complemento":"","bairro":"Industrial","cep":"86063-330","cidade":"Londrina","estado":"Paran\u00e1","tipo_endereco":"Residencial"}],"contatos":[{"id_rm_cliente":"10","id_rm_contato":"1","id_rm_empresa":"2","nome":"Steve Jobs","cargo":"Diretor","telefones":{"total":1,"dados":[{"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":{"total":1,"dados":[{"id_rm_cliente":"10","id_rm_contato":"1","id_rm_email":"5","id_rm_empresa":"2","tipo":"Trabalho","email":"steve@apple-teste.com","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"}],"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:30","status":"A"}],"emails":[],"criado":"2013-09-01 07:00:00","modificado":"2013-09-03 18:30:30","status":"A"}]}
Json解析:
public class MainActivity extends Activity {
private String TAG = this.getClass().getSimpleName();
private ListView lstView;
private RequestQueue mRequestQueue;
private ArrayList<ClientesModel> arrNews ;
public ArrayList<ClientesContatosModel> arrContatos ;
public LayoutInflater lf;
private VolleyAdapter va;
private ProgressDialog pd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lf = LayoutInflater.from(this);
arrNews = new ArrayList<ClientesModel>();
arrContatos = new ArrayList<ClientesContatosModel>();
va = new VolleyAdapter();
lstView = (ListView) findViewById(R.id.listView);
lstView.setAdapter(va);
mRequestQueue = Volley.newRequestQueue(this);
String url = "http://192.168.1.1/represente-api/api/clientes/index.php";
pd = ProgressDialog.show(this,"Please Wait...","Please Wait...");
JsonObjectRequest jr = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.i(TAG,response.toString());
try {
parseJson(response);
} catch (JSONException e) {
e.printStackTrace();
}
va.notifyDataSetChanged();
pd.dismiss();
; }
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d(TAG, "Error: " + error.getMessage());
error.printStackTrace();
pd.hide();
}
}) {
@Override
public Map<String, String> getParams() throws com.android.volley.AuthFailureError{
Map<String, String> params = new HashMap<String, String>();
params.put("email", "rm@.com.br");
params.put("senha", "xxxx");
return params;
}
};
mRequestQueue.add(jr);
}
private void parseJson(JSONObject json) throws JSONException{
try{
JSONArray dados = json.getJSONArray("dados");
for(int i=0;i<dados.length();i++) {
JSONObject item = dados.getJSONObject(i);
ClientesModel mClientesModel = new ClientesModel();
ClientesContatosModel mClientesContatoModel = new ClientesContatosModel();
/* cadastra os dados necessários no objeto no modelo */
mClientesModel.setId(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"));
JSONArray contatos = item.getJSONArray("contatos");
for(int j=0;j<contatos.length();j++){
JSONObject data = contatos.getJSONObject(j);
mClientesContatoModel.setNome(data.optString("nome"));
mClientesContatoModel.setCargo(data.optString("cargo"));
}
arrNews.add(mClientesModel);
arrContatos.add(mClientesContatoModel);
}
}
catch(Exception e){
e.printStackTrace();
}
}
public class VolleyAdapter extends BaseAdapter{
@Override
public int getCount() {
return arrNews.size();
}
@Override
public Object getItem(int i) {
return arrNews.get(i);
}
@Override
public long getItemId(int i) {
return 0;
}
@Override
public View getView(final int i, View view, ViewGroup viewGroup) {
final ViewHolder vh ;
if(view == null){
vh = new ViewHolder();
view = lf.inflate(R.layout.row_listview,null);
vh.tvTitle = (TextView) view.findViewById(R.id.txtTitle);
vh.tvDesc = (TextView) view.findViewById(R.id.txtDesc);
vh.tvInfo = (TextView) view.findViewById(R.id.txtInfo);
vh.tvContato = (TextView) view.findViewById(R.id.txtNome);
view.setTag(vh);
}
else{
vh = (ViewHolder) view.getTag();
}
ClientesModel nm = arrNews.get(i);
vh.tvTitle.setText(nm.getNome());
vh.tvDesc.setText(nm.getTipo_pessoa());
vh.tvInfo.setText(nm.getInformacoes_adicionais());
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
ClientesContatosModel md = arrContatos.get(i);
Intent in = new Intent(getApplicationContext(),
ContatosView.class);
in.putExtra("cargo", md.getNome());
startActivity(in);
}
});
return view;
}
public class ViewHolder{
TextView tvTitle;
TextView tvDesc;
TextView tvInfo;
TextView tvContato;
}
}
}
IntentClass:
public class ContatosView extends MainActivity {
public VolleyAdapter vb;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.contatos_view);
Intent in = getIntent();
// Get JSON values from previous intent
String name = in.getStringExtra("cargo");
// Displaying all values on the screen
TextView lblName = (TextView) findViewById(R.id.txtNome);
vb = new VolleyAdapter();
lblName.setText(name);
}
public class VolleyAdapter extends BaseAdapter{
@Override
public int getCount() {
return arrContatos.size();
}
@Override
public Object getItem(int i) {
return arrContatos.get(i);
}
@Override
public long getItemId(int i) {
return 0;
}
@Override
public View getView(final int i, View view, ViewGroup viewGroup) {
final ViewHolder vh ;
if(view == null){
vh = new ViewHolder();
view = lf.inflate(R.layout.contatos_view,null);
vh.tvTitle = (TextView) view.findViewById(R.id.txtTitle);
vh.tvCargo = (TextView) view.findViewById(R.id.txtCargo);
view.setTag(vh);
}
else{
vh = (ViewHolder) view.getTag();
}
ClientesContatosModel md = arrContatos.get(i);
vh.tvTitle.setText(md.getNome());
vh.tvCargo.setText(md.getCargo());
return view;
}
public class ViewHolder{
TextView tvTitle;
TextView tvCargo;
}
}
}