当有超过二十个EditText时,如何知道我的EditText是否已更改

3

当我只有几个文本编辑框时,使用textchangeListener或比较文本来查找文本是否已更改。如果我有20个以上的编辑框,如何知道编辑框是否已更改。

我发现这里有两个相似的问题:1. 如何检查EditText是否已更改? 2. 知道何时编辑文本已完成 这很有帮助...有没有简单的方法做到这一点。

String temp = "aa";
    if(temp.equals(edittext.getText().toString()) {
        Log.e("Not Change",temp);
    } else {
            Log.e("Changed Value",edittext.getText().toString());
    }

提前感谢您...

这是需要翻译的内容。

如果您有一个EditText数组,那么使用for循环就可以实现这个功能... - ADT
@ADT 有任何参考资料吗? - Vini
没有问题,但我肯定你可以通过这个实现。等我测试后会发布我的答案。 - ADT
你能发布你的代码吗? - ADT
@ADT 看看我的代码,这是我之前尝试过的。 - Vini
2个回答

2
请尝试以下内容:

编辑:

n1I1 = (EditText) findViewById(R.id.etN1I1);
n1I2 = (EditText) findViewById(R.id.etN1I2);
n1I3 = (EditText) findViewById(R.id.etN1I3);


 TextWatcher textWatcher = 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) {
 Toast.makeText(yourActivity.this,"changed",0).show();
    }

    @Override
    public void afterTextChanged(Editable editable) {

    }
};

ArrayList<EditText> firstList = new ArrayList<EditText>();
firstList.add(n1I1);
firstList.add(n1I2);
firstList.add(n1I3);

for(int i=0;i<firstList.size();i++)
{
 firstList.get(i).addTextChangedListener(textWatcher);
}

我提供的临时值是用来比较新编辑文本值和之前值的。 - Vini
它没有显示更改后的提示...也就是说,只有在删除旧记录并插入新记录时才会显示提示。 - Vini

2
请为所有的EditText创建一个通用方法,类似于以下代码:
private void checkEditText(String temp, EditText edittext){
 if(temp.equals(edittext.getText().toString()) {
     Log.e("Not Change",temp);
 } else {
     Log.e("Changed Value",edittext.getText().toString());
 }

使用switch case调用该方法来处理单个EditText。

如果您遇到任何问题,请告诉我。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接