Получить значение из `Response.Listener <JSONObject>()` - PullRequest
0 голосов
/ 09 ноября 2019

Я пытаюсь получить значение из Response.Listener<JSONObject>(). В следующем коде я хотел бы получить valoreConvertito, чтобы использовать его в строке valoreConvertitoCondiviso = String.valueOf(valore * valoreConvertito)

Вот мой код

public static double valoreConvertito = 0.0;
String valoreConvertitoStringa;
public static final String COMPLETEURL = "<url>";

public void onConvertiClick(View view) {
    RadioButton b1, b2;
    b1 = findViewById(R.id.radioButton); 
    b2 = findViewById(R.id.radioButton2); 

    EditText et = findViewById(R.id.InputNumber);
    String str = et.getText().toString();

    double valore = 0;
    String valoreConvertitoCondiviso;

    try{
        valore = Double.parseDouble(str);
    } catch (NumberFormatException e){
        e.printStackTrace();
    }

    if(b1.isChecked()){
        convertiREST("1");
        valoreConvertitoCondiviso = String.valueOf(valore * ???);
    }
    else if(b2.isChecked()){
        convertiREST("2");
        valoreConvertitoCondiviso = String.valueOf(valore * ???);
    }
    else {
        valoreConvertitoCondiviso = "No";
    }
    TextView tvOut = findViewById(R.id.valConvertito);
    tvOut.setText(valoreConvertitoCondiviso);
}

private void convertiREST(final String valuta){
    // Instantiate the RequestQueue.
    RequestQueue queue = Volley.newRequestQueue(this);

    JsonObjectRequest objectRequest = new JsonObjectRequest(
            Request.Method.GET,
            COMPLETEURL,
            null,
            new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {
                        try {
                            Log.i("Rest response    ", response.toString());
                            if(valuta.equals("1")){
                                valoreConvertito = 1;
                                Log.i("valoreConvertito    ", String.valueOf(valoreConvertito));
                            }
                            else{
                                valoreConvertito = 2;
                                Log.i("valoreConvertito    ", String.valueOf(valoreConvertito));
                            }
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        Log.e("Rest response", error.toString());
                    }
                });
    queue.add(objectRequest);
}

Я пробовал с SharedPreferences, но это не правильная методология. В интернете нет четкого объяснения того, как получить значение.

...