android - android TextWatcher beforeTextChanged 问题
问题描述
在我的应用程序中,我有很多编辑文本,我为他们实现了 textWatcher 我希望他们增加和减少 textView 的数量,但我只能增加它
我试图检查旧文本是否比新文本大并减少 textview 编号,但每次都返回 false
我的代码:
editText.addTextChangedListener(new TextWatcher() {
String oldText = "";
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
this.oldText = s.toString();
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
if (!editText.getText().toString().equals("")) {
int price = Integer.parseInt(editText.getText().toString()) * price_db;
productPrice.setText(price + "");
int totalPrice_n = Integer.parseInt(totalPrice.getText().toString());
int min = Integer.parseInt(editText.getText().toString()) - Integer.parseInt(oldText);
if(Integer.parseInt(editText.getText().toString()) > Integer.parseInt(oldText)){
totalPrice.setText((totalPrice_n + min * price_db) + "");
}else{
totalPrice.setText((totalPrice_n - min * price_db) + "");
}
}
}
});
我的问题是,如果条件只返回 false 并转到其他部分,我的 EditText 默认文本也设置为 0,所以我认为 beforeTextChanged 只取 0 并检查新文本是否大于 0
我用 2 个按钮(+,-)更改 editText 的文本,当我单击 + 按钮以增加 TextView 数量时,我希望当我单击 - 按钮以减少 TextView 数量但它只会增加它我不知道为什么
解决方案
用你的代码替换我的代码并检查老兄!:)
editText.addTextChangedListener(new TextWatcher() {
String oldText = "";
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
this.oldText = s.toString();
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
if (!editText.getText().toString().equalsIgnoreCase(""))
{
int amount=Integer.parseI`enter code here`nt(editText.getText().toString());
int price = Integer.parseInt(editText.getText().toString()) * price_db;
int totalPrice_n = Integer.parseInt(totalPrice.getText().toString());
productPrice.setText(price);
int min = amount - Integer.parseInt(oldText);
if(Integer.parseInt(oldText) > 0)
{
if(amount > Integer.parseInt(oldText)){
totalPrice.setText((totalPrice_n + min * price_db));
}else{
totalPrice.setText((totalPrice_n - min * price_db));
}
}
else
Toast.makeText(context,"old text is 0",Toast.LENGTH_LONG).show();
}
}
});
推荐阅读
- mysql - Loopback 应用程序连接到 mysql 谷歌云
- javascript - Firebase Auth登录状态持久性不起作用
- laravel - Laravel 基于标签抓取相关模型
- javascript - 将数据作为对象传递给 mongoDb,将其用作查询和比较
- c++ - 高通六边形 600 处理器在 word32 上执行水平求和的最快方法是什么
- java - 如何在 JUnit 5 中替换 WireMock @Rule 注释?
- python - 如何在 Python 中完全禁用昂贵的日志记录任务
- r - RSelenium 和 Chrome 未显示完整页面
- android-espresso - 如何实现条件检查“如果”在 Espresso 中显示错误对话框
- python - 如何在 Python 中并行运行两个 GUI?