首页 > 解决方案 > 如何同时修改多个 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。我用它只是为了测试它。

出于某种原因,当我更改输入值时,应用程序会冻结。

有什么帮助吗?谢谢!

标签: javaandroidandroid-edittext

解决方案


用于LiveData存储您的用户输入值。一旦它的值发生变化,您就可以为 each 设置值EditText。我认为这是一种简单的实现方法。


推荐阅读