Pass values from the database to Spinner

0

I'm looking for values from the clients in the database via PHP / MYSQL and I'm returning via JSON, and I'd like to pass more than 1 argument to SPINNER (idclient + nomeclient) ... In case, I was able to run the SPINNER passing the "nomecliente" that appears to be selected ... How do I pass the "idler" too ... In this case, I would like to replace the SPINNER ID with the "idclient" ... Here is the code that does the return from JSON, including in the Adapter ...

Below is the code edited with the modifications, complete code.

Client Class

public class Cliente {

private int mId;
private String mNome;

public Cliente(int id, String nome) {
    mId = id;
    mNome = nome;
}

public int getId() {
    return mId;
}

public String getNome() {
    return mNome;
}

}

Registration Class

public class RegistrarActivity extends AppCompatActivity {

private ImageView botaoVoltar;
private Button botaoRegistrar;
private EditText textoCPF, textoEmail;
private Spinner spinnerCliente;
private Cliente cliente;
private String idcliente;
private ArrayList<Cliente> clientes = new ArrayList<>();
private RequestQueue requestQueue, requestQueue2;
private static final String URL = "http://www.caixinhadosmotoristas.com.br/spinner-cliente.php";
private static final String URLReg = "http://www.caixinhadosmotoristas.com.br/validacao.php?acao=register";
private StringRequest request, request2;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_registrar);

    botaoVoltar = (ImageView) findViewById(R.id.botaoVoltarId);
    botaoRegistrar = (Button) findViewById(R.id.botaoRegistrarId);
    textoCPF = (EditText) findViewById(R.id.textoCpfId);
    textoEmail = (EditText) findViewById(R.id.textoEmailId);
    spinnerCliente = (Spinner) findViewById(R.id.spinnerClienteId);

    requestQueue = Volley.newRequestQueue(this);
    requestQueue2 = Volley.newRequestQueue(this);

    RetornaJSONClientes();

    ArrayAdapter arrayAdapter = new ArrayAdapter (this, android.R.layout.simple_spinner_dropdown_item, clientes);
    arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinnerCliente.setAdapter(arrayAdapter);

    spinnerCliente.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            cliente = (Cliente) parent.getItemAtPosition(position);
            idcliente = "1";
        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {
            cliente = null;
        }
    });

    SimpleMaskFormatter mascaraCPF = new SimpleMaskFormatter("NNN.NNN.NNN-NN");
    MaskTextWatcher maskCPF = new MaskTextWatcher(textoCPF, mascaraCPF);
    textoCPF.addTextChangedListener(maskCPF);

    botaoRegistrar.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            request2 = new StringRequest(Request.Method.POST, URLReg, new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    try {
                        JSONObject jsonObject = new JSONObject(response);
                        if (jsonObject.names().get(0).equals("200")){
                            Toast.makeText(getApplicationContext(), jsonObject.getString("mensagem"), Toast.LENGTH_LONG).show();
                        } else {
                            Toast.makeText(getApplicationContext(), jsonObject.getString("mensagem"), Toast.LENGTH_LONG).show();
                        }
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {

                }
            }){
                @Override
                protected Map<String, String> getParams() throws AuthFailureError {
                    idcliente = "" + cliente.getId();
                    HashMap<String, String> hashMap = new HashMap<String, String>();
                    hashMap.put("idcliente", idcliente);
                    hashMap.put("nome", cliente.getNome());
                    hashMap.put("cpf2", textoCPF.getText().toString());
                    hashMap.put("email", textoEmail.getText().toString());
                    return hashMap;
                }
            };

            requestQueue2.add(request2);
        }
    });

    botaoVoltar.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent voltaLogin = new Intent(RegistrarActivity.this, LoginActivity.class);
            startActivity(voltaLogin);
        }
    });
}

private void RetornaJSONClientes(){
    request = new StringRequest(Request.Method.POST, URL, new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {
            String jsonString;
            int jsonInt;

            try {
                JSONArray jsonArray = new JSONArray(response);

                for(int i = 0; i < jsonArray.length(); i++){
                    jsonString = jsonArray.getJSONObject(i).getString("nome");
                    jsonInt = jsonArray.getJSONObject(i).getInt("idcliente");

                    clientes.add(new Cliente(jsonInt, jsonString));
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {

        }
    });

    requestQueue.add(request);
}

}

    
asked by anonymous 20.07.2017 / 23:43

1 answer

2

Create a class Cliente , with the variables id and nome and save the json data in ArrayList<Cliente>

Ex:

public class Cliente {

    private int mId;
    private String mName;

    public Cliente(int id, String name) {
        mId = id;
        mName = name;
    }

    public int getId() {
        return mId;
    }

    public String getName() {
        return mName;
    }

    public String toString() {
        return mName;
    }   
}

ArrayList<Cliente> clientes = new ArrayList<>();
clientes.add(new Cliente(1, "Fulano 1"));
clientes.add(new Cliente(2, "Fulano 2"));

When creating the Spinner adapter, associate with the ArrayList above. Ex:

ArrayAdapter spinnerAdapter = new ArrayAdapter(this,
            android.R.layout.simple_spinner_item, clientes);

To access a Spinner client:

Cliente cliente;
Spinner spinner; // Inicialize com o findViewById, setAdapter, etc


spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        cliente = (Cliente) parent.getItemAtPosition(position);
    }

    @Override
    public void onNothingSelected(AdapterView<?> parent) {
        cliente = null;
    }
});
    
21.07.2017 / 04:22