【问题标题】:How to add on Change listener in Edittext如何在 Edittext 中添加更改侦听器
【发布时间】:2020-02-26 15:43:27
【问题描述】:

在我的 Android 应用程序中。我有一个 EditText 和 Textview.in Edittext 用户需要 输入金额。当他在编辑文本中输入金额时,在 textview 中它必须 显示总价值(税收价值的加法)。如何做到这一点。

【问题讨论】:

    标签: android android-edittext ontouchlistener


    【解决方案1】:

    您可以为此使用 textwatcher。

    editText.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) {
    
        }
    
        @Override
        public void afterTextChanged(Editable s) {
    
        }
    });
    

    【讨论】:

      【解决方案2】:

      您必须为您的 EditText 添加一个 TextWatcher 作为 TextChangeListener:

          mEditText.addTextChangedListener(new TextWatcher() {
              @Override
              public void beforeTextChanged(CharSequence charSequence, int start, int before, int count) {
      
              }
      
              @Override
              public void onTextChanged(CharSequence charSequence, int start, int count, int after) {
                   mTextView.setText(mEditText.getText().toString());
              }
      
              @Override
              public void afterTextChanged(Editable editable) {
      
              }
          });
      

      【讨论】:

        【解决方案3】:
        EditText Et = (EditText) findViewById(R.id.editTextID);
        Et.addTextChangedListener(new TextWatcher() {
        @Override
        public void afterTextChanged(Editable s) {
            // TODO Auto-generated method stub
        }
        
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            // TODO Auto-generated method stub
        }
        
        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            // TODO Auto-generated method stub
            // You need to write your code here when user need to enter the amount.
        });
        

        【讨论】:

          【解决方案4】:

          我添加了示例代码,它会持续观察 edittext 的变化并进行一些操作,然后在 textview 中更新该值。我希望这将有所帮助。请遵循命名约定。

          EditText 编辑 = (EditText) findViewById(R.id.editText1);

              edit.addTextChangedListener(new TextWatcher() {
          
                  @Override
                  public void onTextChanged(CharSequence s, int start, int before,
                          int count) {
                      TextView twxt = (TextView) findViewById(R.id.textView1);
                      Double sum = 0.00;
                      Double userValue = 0.00;
                      // TODO Auto-generated method stub
                      try {
                          userValue = Double.valueOf(s.toString());
          
                      } catch (Exception e) {
                          e.printStackTrace();
                      }
                      sum = 2 * (sum + userValue);
                      twxt.setText(String.valueOf(sum));
          
                  }
          
                  @Override
                  public void beforeTextChanged(CharSequence s, int start, int count,
                          int after) {
                      // TODO Auto-generated method stub
          
                  }
          
                  @Override
                  public void afterTextChanged(Editable s) {
                      // TODO Auto-generated method stub
          
                  }
              });
          

          【讨论】:

          • 非常感谢dayana...它非常有用并且与我的场景完美匹配。谢谢
          • 不应在 onTextChanged 方法中声明您的 TextView。这种方式效率不高(每次用户写入或删除字符时,都会调用 findViewById)。
          猜你喜欢
          • 2011-05-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-07-23
          • 2018-04-03
          • 1970-01-01
          • 1970-01-01
          • 2017-03-11
          相关资源
          最近更新 更多