如何在TextWatcher中将当前值与旧值进行比较?

时间:2017-06-05 10:02:17

标签: android android-edittext android-textwatcher

我正在渲染数据库中的值并将这些值放在相应的EditText字段中,因此通常允许用户修改其保存数据。

我的页面上有一个SAVE按钮,默认情况下禁用。只有在真正修改了EditText字段时才应启用它。

与数据库值比较时,

  1. 如果编辑文本值已更改 - 已修改
  2. 如果EditText值已编辑但未更改(用户可能会复制粘贴相同的值) - 未修改。
  3. 这是我的代码,

    EditText text1  = (EditText) findViewById(R.id.text1);
    EditText text2  = (EditText) findViewById(R.id.text2);
    EditText text3  = (EditText) findViewById(R.id.text3);
    EditText text4  = (EditText) findViewById(R.id.text4);
    EditText text5  = (EditText) findViewById(R.id.text5);
    
    ArrayList<EditText> editTextList = new ArrayList();
    editTextList.add(text1);
    editTextList.add(text2);
    editTextList.add(text3);
    editTextList.add(text4);
    editTextList.add(text5);
    
    for(EditText e : editTextList)
      e.addTextChangedListener(textWatcher);
    
    private TextWatcher textWatcher = new TextWatcher() {
    
    public void afterTextChanged(Editable s){}
    public void beforeTextChanged(CharSequence s, int start, int count, int 
    after) {}
     public void onTextChanged(CharSequence s, int start, int before,int 
    count) {}
    };
    

    有没有办法将数据库值与EditText中的当前给定值进行比较?

    注意:

    由于TextWatcher函数对于所有EditText都是通用的,我想进行常见的比较。

1 个答案:

答案 0 :(得分:0)

你必须自己用全局变量来控制它。或反应物或使用数据绑定。