onTextChangedListener is a method that is called when text is edited or changed inside an EditText. TextWatcher is an essential class provided by Android Developers. Input text fields can be analyzed with it, and data on other views can be updated immediately. It can be helpful for providing instantaneous text field responses and password strength assessments in order to provide Live Updates.
Syntax:
public abstract void onTextChanged(CharSequence s, int start, int before, int count)
To use this method:
We will create an android application in which we will add an editText and whenever the editText is edited/changed, onTextChanged method will be called then we toast a message to the user that onTextChanged method is called and the text is edited.Â
Step By Step Implementation
Step 1: Create a New Project in Android Studio
To create a new project in Android Studio please refer to How to Create/Start a New Project in Android Studio. The code for that has been given in both Java and Kotlin Programming Language for Android.
Step 2: Working with the XML Files
Next, go to the activity_main.xml file, which represents the UI of the project. Below is the code for the activity_main.xml file. Comments are added inside the code to understand the code in more detail.
XML
<?xml version="1.0" encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayout    android:layout_width="match_parent"    android:layout_height="match_parent"    android:background="@color/white"    tools:context=".MainActivity">      <!-- TextView to show -->    <TextView        android:id="@+id/textView"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="Best website for CSE "        android:textColor="@color/purple_500"        android:textSize="32dp"        app:layout_constraintBottom_toTopOf="@+id/personName"        app:layout_constraintEnd_toEndOf="parent"        app:layout_constraintStart_toStartOf="parent"        app:layout_constraintTop_toTopOf="parent" />      <!-- EditText which is editable -->    <EditText        android:id="@+id/personName"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:hint="Lazyroar"        android:ems="10"        android:inputType="textPersonName"        android:textColor="@color/purple_500"        android:textColorHint="@color/purple_500"        android:textSize="26dp"        app:layout_constraintBottom_toBottomOf="parent"        app:layout_constraintEnd_toEndOf="parent"        app:layout_constraintStart_toStartOf="parent"        app:layout_constraintTop_toTopOf="parent" />  </androidx.constraintlayout.widget.ConstraintLayout> |
Step 3: Working with the MainActivity File
Go to the MainActivity File and refer to the following code. Below is the code for the MainActivity File. Comments are added inside the code to understand the code in more detail.
Java
import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;import android.text.Editable;import android.text.TextWatcher;import android.widget.EditText;import android.widget.Toast;  public class MainActivity extends AppCompatActivity {      EditText gfgName;      // a method to toast a message given    public void toastMsg(String msg) {        Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();    }      // textWatcher is for watching any changes in editText    TextWatcher textWatcher = new TextWatcher() {        @Override        public void beforeTextChanged(CharSequence s, int start, int count, int after) {            // this function is called before text is edited        }          @Override        public void onTextChanged(CharSequence s, int start, int before, int count) {            // this function is called when text is edited            toastMsg("text is edited and onTextChangedListener is called.");        }          @Override        public void afterTextChanged(Editable s) {            // this function is called after text is edited        }    };      @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);          // register UI element        // with their ID        gfgName = findViewById(R.id.personName);          // set the TextChange Listener for        // the edit text field        gfgName.addTextChangedListener(textWatcher);    }} |
Kotlin
import android.os.Bundleimport android.text.Editableimport android.text.TextWatcherimport android.widget.EditTextimport android.widget.Toastimport androidx.appcompat.app.AppCompatActivity  class MainActivity : AppCompatActivity() {      private lateinit var gfgName: EditText      // a method to toast a message given    fun toastMsg(msg: String?) {        Toast.makeText(this, msg, Toast.LENGTH_SHORT).show()    }      // textWatcher is for watching any changes in editText    var textWatcher: TextWatcher = object : TextWatcher {        override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {            // this function is called before text is edited        }          override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {            // this function is called when text is edited            toastMsg("text is edited and onTextChangedListener is called.")        }          override fun afterTextChanged(s: Editable) {            // this function is called after text is edited        }    }      override fun onCreate(savedInstanceState: Bundle?) {        super.onCreate(savedInstanceState)        setContentView(R.layout.activity_main)          // register UI element        // with their ID        gfgName = findViewById(R.id.personName)          // set the TextChange Listener for        // the edit text field        gfgName.addTextChangedListener(textWatcher)    }} |
