java - 如何同时修改多个 EditText 的输入,因为我只修改一个?
问题描述
我有多个 EditTexts,我想同时更改所有它们的输入,因为我只修改了一个。(它们都以十进制数字作为输入)
我将 EditTexts 存储在名为“editTexts”的数组中。
这是我尝试过的
//Set the listener for each element
for (int i=0; i<editTexts.length; i++) {
final int finalI = i;
editTexts[i].addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
//if the editText which is currently edited is empty, set the input for all the rest to be '0.0'
if (editTexts[finalI].getText().toString().trim().length() == 0) {
for(EditText e : editTexts) {
if (e == editTexts[finalI])
continue;
e.setText("0.0");
}
} else {
float no = Float.parseFloat(s.toString() + "");
//Set the input of all the other editTexts to be the decimal number entered, multiplied by 2
for(EditText e : editTexts){
if(e == editTexts[finalI])
continue;
e.setText(no*2+"");
}
}
}
@Override
public void afterTextChanged(Editable s) {
}
})
}
在这种情况下,乘法系数只是一个例子,它并不总是 2。我用它只是为了测试它。
出于某种原因,当我更改输入值时,应用程序会冻结。
有什么帮助吗?谢谢!
解决方案
用于LiveData
存储您的用户输入值。一旦它的值发生变化,您就可以为 each 设置值EditText
。我认为这是一种简单的实现方法。