কম্পিউটার টিউটোরিয়াল

অ্যান্ড্রয়েডে TextWatcher ক্লাস ব্যবহারের পদ্ধতি

TextWatcher ব্যবহার করে EditText ইনপুট নিরীক্ষণ করা

TextWatcher হল একটি ইন্টারফেস যা EditText-এ টেক্সট পরিবর্তন হওয়ার সময় কলব্যাক প্রদান করে। এটি রিয়েল-টাইম ভ্যালিডেশন, ক্যারেক্টার কাউন্ট, অটো-কমপ্লিট ইত্যাদির জন্য ব্যবহৃত হয়।

ধাপ ১: নতুন প্রজেক্ট তৈরি করুন

Android Studio-তে File → New Project থেকে প্রজেক্ট তৈরি করুন।

ধাপ ২: লেআউট XML (activity_main.xml)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    
    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Android Text Watcher"
        android:textSize="16sp"
        android:textStyle="bold"
        android:layout_marginTop="24sp"
        android:layout_centerHorizontal="true"
        android:layout_alignParentTop="true" />
    
    <EditText
        android:id="@+id/etInput"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_below="@id/text"
        android:maxLength="15"
        android:hint="Input" />
    
    <TextView
        android:id="@+id/textView"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textSize="24sp"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="12dp"
        android:layout_below="@id/etInput"/>
</RelativeLayout>

ধাপ ৩: MainActivity.java বাস্তবায়ন

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

public class MainActivity extends AppCompatActivity {
    EditText input;
    TextView output;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        input = findViewById(R.id.etInput);
        output = findViewById(R.id.textView);
        input.addTextChangedListener(textWatcher);
    }

    TextWatcher textWatcher = new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            // টেক্সট পরিবর্তনের আগে কল হয়
        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            // টেক্সট পরিবর্তন হয়ে যাওয়ার সময় কল হয়
            output.setText(s);
            
            // ১২ ক্যারেক্টারের পর ম্যাক্সিমাম লিমিট মেসেজ
            if (start == 12) {
                Toast.makeText(getApplicationContext(), "Maximum Limit Reached", Toast.LENGTH_SHORT).show();
            }
        }

        @Override
        public void afterTextChanged(Editable s) {
            // টেক্সট পরিবর্তন হয়ে গেলে কল হয়
        }
    };
}

TextWatcher-এর তিনটি মেথড ব্যাখ্যা

  • beforeTextChanged(): টেক্সট পরিবর্তন হওয়ার ঠিক আগে কল হয়। এখানে আপনি পুরানো মান পেতে পারেন।
  • onTextChanged(): টেক্সট পরিবর্তন হয়ে যাওয়ার সময় কল হয়। রিয়েল-টাইম আপডেটের জন্য আদর্শ।
  • afterTextChanged(): টেক্সট পরিবর্তন সম্পন্ন হয়ে যাওয়ার পর কল হয়। এখানে Editable অবজেক্ট পাওয়া যায়।

ধাপ ৪: AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="app.com.sample">
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

ব্যবহারিক উদাহরণ

এই কোডটি রান করলে EditText-এ টাইপ করার সাথে সাথে নিচের TextView-এ টেক্সট কপি হবে। ১২ ক্যারেক্টার পূর্ণ হলে টোস্ট মেসেজ দেখাবে।

  1. অ্যান্ড্রয়েডে Firebase Messaging ব্যবহারের পদ্ধতি

  2. অ্যান্ড্রয়েডে পেজিনেটিং টেক্সট তৈরির পদ্ধতি

  3. অ্যান্ড্রয়েড টুলবারে SearchView ব্যবহার করার পদ্ধতি

  4. অ্যান্ড্রয়েড অ্যাপে CalendarView ব্যবহার করে ক্যালেন্ডার উইজেট তৈরির পদ্ধতি