SANDHYA
SANDHYA

Reputation: 791

How to change TextView's text on change of EditText's text?

I have an EditText box where the user can enter input. I need to display the input text in a TextView (which is placed below the EditText) while the user inputting the text.

Example:

If the user is entering any characters in EditText box, I need to display the same characters in TextView. In the same way, If the user deletes any character from EditText, I need to remove the same character from TextView. (Ultimately, I want to change TextView's text on change of EditText's text). I hope my requirement is clear now. How can I achieve this? Please guide me.

Upvotes: 8

Views: 15929

Answers (4)

Dmitrii Leonov
Dmitrii Leonov

Reputation: 1389

The solution is to add TextWatcher to the EditText by using addTextChangedListener() function. In TextWatcher you'll need to write transformation / validation logic inside one of 3 functions afterTextChanged(), beforeTextChanged(), onTextChanged() depending on when you want to perform those actions.

Using Kotlin you would do something like that:

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() }
        }
    })

Upvotes: 0

Add TextWatcher to your Edittext. in afterTextChanged() do your operation. 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);

Upvotes: 23

Shabbir Panjesha
Shabbir Panjesha

Reputation: 1939

You should overwrite this method :

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())
        } 
    }
});

Upvotes: 5

Parag Chauhan
Parag Chauhan

Reputation: 35936

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());

                }
            }
        });
    }

Upvotes: 4

Related Questions