Вам придется реализовать TextWatcher
для вашего EditText
.Сначала создайте массив, который будет содержать цены на гамбургеры (отображающие типы гамбургеров из счетчика) и поле int
, в котором будет храниться текущий выбор из счетчика:
double[] prices = {1d, 2d, 3d};
int currentSelection = 0;
, затем реализуйте TextWatcher
для вашего EditText
:
burgerquantity.addTextChangedListener(new TextWatcher() {
public void onTextChanged(CharSequence s, int start, int before,
int count) {
// TODO Auto-generated method stub
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
public void afterTextChanged(Editable s) {
double result = Integer.parseInt(s.toString())
* prices[currentSelection]; //obtain the total
total.setText("" + result); //set the result
}
Также в вашем слушателе счетчика установите поле currentSelection:
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
currentSelection = arg2;
//this is needed because the user could enter a value in the EditText but change to another burger category and so you update the total for the new price
if (!burgerquantity.getText().toString().equals("")) {
double result = Integer.parseInt(burgerquantity.getText()
.toString()) * prices[currentSelection];
total.setText("" + result);
}
}
});
ПРИМЕЧАНИЕ. Вам придется позаботиться об исключении, которое можетвозникают при синтаксическом анализе значения из EditText
(например, если пользователь вводит значение, а затем удаляет все числа, которые будут иметь исключение, поскольку приложение будет пытаться проанализировать пустую строку)