如何在Android上使用两个不同的适配器

时间:2014-07-23 11:36:17

标签: android arrays json android-volley

我正在尝试在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;

        }

    }

}

0 个答案:

没有答案