Конвертер валют с расчетом по любому полю

Код взят в качестве основы и частично переработан мной. Пока читаю учебник по яве, представляю что должно получиться и пытаюсь на практике что-то освоить. Удалось получить курсы валют по апи. Имеется 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), а то на котором находится курсор или фокус, но не совсем понятно как эту задачу решить, не хватает опыта и знаний.

Может есть у кого идеи?


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