Reputation: 791
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
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
Reputation: 42016
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
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
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