Android EditText TextWatcher Example

  • by
Android EditText TextWatcher - Design view

Android EditText TextWatcher Example :

Android EditText TextWatcher are useful for getting EditText control value at the time of entering text in it by the user. This can serve many purposes. You can validate user input for certain validation. In this post we will see how to implement the same in our application.

To add a Textwatcher to your EditText control, you have add TextChangedListener listeners. Below is the sample code.

EditText edtView = (EditText) findViewById(R.id.YourEditTextIdHere);
//Initialization of EditText


//Adding the listeners

edtView.addTextChangedListener(new TextWatcher() {

@Override
 public void onTextChanged(CharSequence s, int start, int before,
 int count) {
 txtView.setText("Total Characters entered : "
 + edtView.getText().length() + ".");
 }

@Override
 public void beforeTextChanged(CharSequence s, int start, int count,
 int after) {
 //Your code here
 }

@Override
 public void afterTextChanged(Editable s) {
 //Your code here

}
 });

Make a new application in Android studio with your desired package name and app name. Open the layout file activity_main.xml and make following changes to it.

res > layout > activity_main.xml :

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="vertical"
 android:background="#fff"
 android:padding="2dp"
 android:weightSum="10" >

<EditText
 android:id="@+id/edtView"
 android:layout_width="match_parent"
 android:layout_height="0dp"
 android:background="@android:drawable/editbox_background_normal"
 android:textColor="#252525"
 android:gravity="top|left"
 android:hint="Enter your Text here."
 android:layout_weight="9" />

<TextView
 android:id="@+id/txtView"
 android:layout_width="match_parent"
 android:layout_height="0dp"
 android:textColor="#000"
 android:textStyle="bold"
 android:layout_weight="1" />

</LinearLayout>

 

This is a very basic layout wherein I have made a simple Android EditText control and TextView control.

The TextView control will be just displaying number of characters entered in the EditText control.

Android EditText TextWatcher - Design view

Android EditText TextWatcher – Design view

Now edit the java class, MainActivity.java as below :

MainActivity.java :

package parallelcodes.simplewidget;

import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends Activity {

EditText edtView;
 TextView txtView;

@Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);

edtView = (EditText) findViewById(R.id.edtView);
 txtView = (TextView) findViewById(R.id.txtView);

edtView.addTextChangedListener(new TextWatcher() {

@Override
 public void onTextChanged(CharSequence s, int start, int before,
 int count) {
 txtView.setText("Total Characters entered : "
 + edtView.getText().length() + ".");
 }

@Override
 public void beforeTextChanged(CharSequence s, int start, int count,
 int after) {
 //Your code here
 }

@Override
 public void afterTextChanged(Editable s) {
 //Your code here

}
 });

}

}

AndroidManifest.xml :

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
 package="parallelcodes.simplewidget"
 android:versionCode="1"
 android:versionName="1.0" >

<uses-sdk
 android:minSdkVersion="14"
 android:targetSdkVersion="14" />

<application
 android:allowBackup="true"
 android:icon="@drawable/ic_launcher"
 android:label="@string/app_name"
 android:theme="@style/AppTheme" >
 <activity
 android:name=".MainActivity"
 android:label="@string/app_name"
 android:windowSoftInputMode="adjustResize"
 android:screenOrientation="portrait" >
 <intent-filter>
 <action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
 </intent-filter>
 </activity>
 </application>

</manifest>

When you run the application, TextView will be showing Number of characters entered in EditText control.

Android EditText TextWatcher - Design view

Android EditText TextWatcher – Design view

See also : Android Beginners Tutorial.


Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.