【发布时间】:2021-04-26 23:04:36
【问题描述】:
我在一个网站上工作,我正在使用 Javascript 更改文本更改文本。
- 当用户更改数量时,我将更改总价和售价值。
- 当用户更改销售价格时,我正在更改折扣值。
- 当用户更改折扣时,我正在更改销售价格值。
现在我想要在我的 android 应用程序中做同样的事情。
我在每个EditText 上添加了文本更改事件侦听器。
喜欢
对于数量编辑文本
holder.inputSaleQuantity.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
}
});
折扣EditText。
holder.inputSaleDiscount.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
Log.d("SocialCodia", "afterTextChanged: inputSaleDiscount Event Listener Called");
int input = 0;
if (editable.toString().trim().length() > 0) {
input = Integer.parseInt(editable.toString().trim());
}
discountInputEvent(holder, input);
}
});
出售价格编辑文本。
holder.inputSalePrice.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
priceEvent(holder);
Log.d("SocialCodia", "afterTextChanged: inputSalePrice Event Listener Called");
}
});
为什么要一次又一次地执行方法。
当我更改任何 EditText 的值时,例如更改 数量 EditText 的值,其调用销售价格编辑文本更改 监听器。
因为数量值的变化我正在改变售价 价值。因此,当售价值发生变化时,文本更改侦听器 正在执行。
我正在调用的方法。
private void priceEvent(ViewHolder holder) {
int totalPrice = Integer.parseInt(holder.inputTotalPrice.getText().toString().trim());
int sellPrice = Integer.parseInt(holder.inputSalePrice.getText().toString().trim());
int discount = percentage(sellPrice, totalPrice);
holder.inputSaleDiscount.setText(String.valueOf(discount));
}
private void discountInputEvent(ViewHolder holder, int input) {
int totalPrice = Integer.parseInt(holder.inputTotalPrice.getText().toString().trim());
int price = percentageDec(totalPrice, input);
holder.inputSalePrice.setText(String.valueOf(price));
}
private int percentage(int partialValue, int totalValue) {
Double partial = (double) partialValue;
Double total = (double) totalValue;
Double per = (100 * partial) / total;
Double p = 100 - per;
return p.intValue();
}
private int percentageDec(int totalValue, int per) {
if (per == 0 || String.valueOf(per).length() < 0)
return totalValue;
else {
Double total = (double) totalValue;
Double perc = (double) per;
Double price = (total - ((perc / 100) * total));
Integer p = price.intValue();
return p;
}
}
简短的问题:
我只想在addTextChangeEventListener() 的值时手动更改EditText。
但是当我使用脚本更改值时,我不想使用addTextChangeEventListner()。
我怎样才能做到这一点。或者我该如何解决这个问题。
-谢谢
【问题讨论】:
标签: java android android-edittext listener