Monday, July 10, 2017

Monitor user action on EditText

This example implement TextWatcher for EditText, such that we can detect user action on EditText, no extra "Enter" button is need.



package com.blogspot.android_er.androidedittextchanged;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    EditText editText;
    TextView tvMsg, tvInfo;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        editText = (EditText)findViewById(R.id.edittext);
        tvMsg = (TextView)findViewById(R.id.msg);
        tvInfo = (TextView)findViewById(R.id.info);

        editText.addTextChangedListener(myTextWatcher);
    }

    TextWatcher myTextWatcher = new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence charSequence, 
                                      int i, int i1, int i2) {
            tvInfo.setText("beforeTextChanged(): \n"
                    + charSequence + "\n"
                    + i + "\n"
                    + i1 + "\n"
                    + i2);
        }

        @Override
        public void onTextChanged(CharSequence charSequence, 
                                  int i, int i1, int i2) {
            tvInfo.setText("onTextChanged(): \n"
                    + charSequence + "\n"
                    + i + "\n"
                    + i1 + "\n"
                    + i2);
            tvMsg.setText(charSequence);
        }

        @Override
        public void afterTextChanged(Editable editable) {
            /*
            String s = editable.toString();
            tvInfo.setText("afterTextChanged(): \n"
                    + s);
                    */
        }
    };
}



<?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:layout_margin="20dp"
    android:orientation="vertical"
    tools:context="com.blogspot.android_er.androidedittextchanged.MainActivity">

    <TextView
        android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:autoLink="web"
        android:text="http://android-er.blogspot.com/"
        android:textStyle="bold"/>

    <EditText
        android:id="@+id/edittext"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Enter text"
        android:textSize="24dp"/>
    <TextView
        android:id="@+id/msg"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textStyle="bold"
        android:textSize="24dp"/>
    <TextView
        android:id="@+id/info"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textStyle="italic"
        android:textSize="20dp"/>

</LinearLayout>



Next:
Another example of TextWatcher to monitor text changed in EditText

No comments: