Android: передача из SearchableSpinner выбранной даты в один из параметров url запроса по api

В сети конкретно моей проблемы не нашел, перепробовал кучу всего что могло бы помочь, но ничего не выходит. Все происходит в классе MainActivity

  1. Объявлена переменная

    String linkCurrencySpinner1 = "https://www.nbrb.by/api/exrates/rates?ondate="+date+"&periodicity=0";

Выполняется запрос и получаются данные для спиннера здесь

public void showData1() {
        progressDialog.setMessage("Загрузка...");
        progressDialog.show();
        StringRequest stringRequest = new StringRequest(
                Request.Method.GET,
                linkCurrencySpinner1, new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                        //listCur_CodeCurrencySpinner1.clear();
                        listCur_AbbreviationCurrencySpinner1.clear();
                        try {
                                JSONArray jsonArray = new JSONArray(response);
                                for (int i = 0; i < jsonArray.length(); i++) {
                                        try {
                                                JSONObject oneObject = jsonArray.getJSONObject(i);
                                                // Pulling items from the array
                                                String oneObjectsItem = oneObject.getString("Cur_Abbreviation");
                                                listCur_AbbreviationCurrencySpinner1.add(oneObjectsItem);
                                        } catch (JSONException e) {
                                                // Oops
                                        }

                                }
                                ArrayAdapter<String> arrayAdapter = new ArrayAdapter<>(context, android.R.layout.simple_spinner_dropdown_item, listCur_AbbreviationCurrencySpinner1);
                                currencySpinner1.setAdapter(arrayAdapter);
                                currencySpinner1.setSelection(2);
                                progressDialog.dismiss();
                                currencySpinner1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                                        @Override
                                        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

                                        }

                                        @Override
                                        public void onNothingSelected(AdapterView<?> parent) {

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

                }
        });
        RequestQueue requestQueue = Volley.newRequestQueue(context);
        requestQueue.add(stringRequest);
}
  1. Есть кнопка с датой, в которую подгружается текущая дата, а при нажатии появляется спиннер выбора даты, и новая дата появляется в этой кнопке. Вот основные для этого методы:

     public void initDatePicker()
     {
             DatePickerDialog.OnDateSetListener dateSetListener = new DatePickerDialog.OnDateSetListener()
             {
                     @Override
                     public void onDateSet(DatePicker datePicker, int year, int month, int day)
                     {
                             month = month + 1;
                             date = makeDateString(day, month, year);
                             dateButton.setText(date);
    
                     }
    
             };
    
             Calendar cal = Calendar.getInstance();
             int year = cal.get(Calendar.YEAR);
             int month = cal.get(Calendar.MONTH);
             int day = cal.get(Calendar.DAY_OF_MONTH);
    
             int style = AlertDialog.THEME_HOLO_DARK;
    
             datePickerDialog = new DatePickerDialog(this, style, dateSetListener, year, month, day);
     }
    

Моя проблема в том, что я не знаю как получить из onDateSet выбранную дату в переменной date и использовать ее в качестве параметра урла в переменной linkCurrencySpinner1.

Интернет пестрит примерами передачи данных в компоненты интерфейса, а вот внутри класса как это сделать не нашел для себя подходящего варианта. Может кто решал такую задачу и есть готовый вариант? Буду благодарен за развернутый ответ, я только начал изучать эту тему.


Ответы (1 шт):

Автор решения: Pentiux

Мой вариант, если я се верно понял Почему бы просто в самом методе не передать выбранную дату куда нам нужно. например во вьюМодель.

         @Override
         public void onDateSet(DatePicker datePicker, int year, int month, int day)
         {
                 month = month + 1;
                 date = makeDateString(day, month, year);
                 linkCurrencySpinner1 = "https://www.nbrb.by/api/exrates/rates?ondate=" + date + "&periodicity=0"; // Типа того
                 dateButton.setText(date);

         }

ок, попробуем так

→ Ссылка