Android: передача из SearchableSpinner выбранной даты в один из параметров url запроса по api
В сети конкретно моей проблемы не нашел, перепробовал кучу всего что могло бы помочь, но ничего не выходит. Все происходит в классе MainActivity
Объявлена переменная
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);
}
Есть кнопка с датой, в которую подгружается текущая дата, а при нажатии появляется спиннер выбора даты, и новая дата появляется в этой кнопке. Вот основные для этого методы:
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 шт):
Мой вариант, если я се верно понял Почему бы просто в самом методе не передать выбранную дату куда нам нужно. например во вьюМодель.
@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);
}
ок, попробуем так