【问题标题】:How to change TextView's text on change of EditText's text?如何在更改 EditText 文本时更改 TextView 文本?
【发布时间】:2012-05-28 18:38:58
【问题描述】:

我有一个EditText 框,用户可以在其中输入输入。当用户输入文本时,我需要在TextView(位于 EditText 下方)中显示输入文本。

示例:

如果用户在 EditText 框中输入任何字符,我需要在 TextView 中显示相同的字符。同样,如果用户从 EditText 中删除任何字符,我需要从 TextView 中删除相同的字符。 (最终,我想在更改 EditText 的文本时更改 TextView 的文本)。我希望我的要求现在很清楚。我怎样才能做到这一点?请指导我。

【问题讨论】:

标签: android android-edittext textview


【解决方案1】:

将 TextWatcher 添加到您的 Edittext。在afterTextChanged() 做你的操作。 http://developer.android.com/reference/android/text/TextWatcher.html

TextWatcher inputTextWatcher = new TextWatcher() {
    public void afterTextChanged(Editable s) { 
                textview.setText(s.toString());
    }
    public void beforeTextChanged(CharSequence s, int start, int count, int after){
    }
    public void onTextChanged(CharSequence s, int start, int before, int count) {
    }
};

editText.addTextChangedListener(inputTextWatcher);

【讨论】:

    【解决方案2】:
    edtText.addTextChangedListener(new TextWatcher() {
                @Override
                public void onTextChanged(CharSequence s, int start, int before, int count) {
                    // 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 afterTextChanged(Editable s) {
                    // TODO Auto-generated method stub
                    if (!edtText.getText().toString().equalsIgnoreCase("")){
    
                        // here textview.setText(edtText.getText());
    
                    }
                }
            });
        }
    

    【讨论】:

      【解决方案3】:

      你应该重写这个方法:

      editText.addTextChangedListener(new TextWatcher() {
          @Override
          public void onTextChanged(CharSequence s, int start, int before, int count) {
      
          }
      
          @Override
          public void beforeTextChanged(CharSequence s, int start, int count, int after) {
      
          }
      
          @Override
          public void afterTextChanged(Editable s) {
              if(editText.getText().length() >= 0) {
                  textView.setText(editText.getText().toString())
              } 
          }
      });
      

      【讨论】:

      • 专家以同样的方式我想从数据库中填充 textview 详细信息以对抗 edittext 条目。例如,我的表详细信息 column1 Alex,column2 12。当我输入 edittext 值 12 时,textview 应该显示 Alex 而无需像键盘输入检测那样单击任何按钮。
      【解决方案4】:

      解决方案是使用addTextChangedListener() 函数将TextWatcher 添加到EditText。在 TextWatcher 中,您需要在 afterTextChanged()beforeTextChanged()onTextChanged() 三个函数之一中编写转换/验证逻辑,具体取决于您想要执行这些操作的时间。

      使用 Kotlin 你会做这样的事情:

      editText.addTextChangedListener(object : android.text.TextWatcher {
              override fun afterTextChanged(s: Editable?) {
      
              }
      
              override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
              }
      
              override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
                  s?.let { textView.text = s.toString() }
              }
          })
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-07
        • 2019-06-03
        • 2011-01-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多