Код взят в качестве основы и частично переработан мной. Пока читаю учебник по яве, представляю что должно получиться и пытаюсь на практике что-то освоить. Удалось получить курсы валют по апи. Имеется 4 (хотя на самом деле 5), но важных 4 TextView и 4 спиннера с поиском по лейблам валют. Кнопка с датой для выбора курсов валют по дате.
Черновой вариант нормально работает, кроме одного - расчет производится путем ввода в конкретное поле суммы базовой валюты, а хотелось бы вводить сумму в любом поле с расчетом по другим полям. Вот и вопрос к знатокам как в рамках имеющегося кода это можно было бы реализовать
public void currencyInputs() {
et1 = (EditText) findViewById(R.id.input1); //это
et2 = (EditText) findViewById(R.id.input2); //те
et3 = (EditText) findViewById(R.id.input3); //4
et4 = (EditText) findViewById(R.id.input4); //поля
et5 = (EditText) findViewById(R.id.basicValue); //тут еще расчет количества базовых величин (чисто белорусское изобретение)
etArray.add(et1); //тут ссылки передаем в массив
etArray.add(et2);
etArray.add(et3);
etArray.add(et4);
}
А здесь происходит расчет
private void exchange() {
EditText baseEt = (EditText) etArray.get(0); // берется первое поле из массива за базовое
if (baseEt == null || TextUtils.isEmpty(baseEt.toString())) {
Log.e("EditText Error", "EditText Missing");
return;
}
double baseValue = (Double) Double.valueOf(baseEt.getText().toString());
//получаем из него содержимое и передаем в цикл и формулу
for (int i = 1; i < 4; i++) {
double convertedValue = baseValue / rate[i]; //rate[i] это массив переменных из курсов валют, которые выбраны в спиннерах
etArray.get(i).setText(String.valueOf(convertedValue));
}
double baseVal = baseValue / 29.0;
et5.setText(String.valueOf(baseVal));
}
Вот результат на сегодня
Есть мысль каким-то образом за базовое поле брать не с нулевым индексом - etArray.get(0), а то на котором находится курсор или фокус, но не совсем понятно как эту задачу решить, не хватает опыта и знаний.
Может есть у кого идеи?