TextWatcher
editText에 입력한 값을 실시간으로 관찰하면서 입력값에 따른 처리를 하고자 할 때 TextWatcher 를 이용한다.
TextWatcher 는 텍스트를 지켜 보고 있는 인터페이스다.
TextWatcher 는 인터페이스 이기 때문에 갖고 있는 모든 메서드를 재정의해야 한다.
TextWatcher에는 아래 3가지 메서드가 있다.
- beforeTextChanged(CharSequence charSequence, int i, int i1, int i2)
- onTextChanged(CharSequence charSequence, int i, int i1, int i2)
- afterTextChanged(Editable editable)
여기서 실습을 통해 설명한 메소드는 afterTextChanged 이다.
주로 afterTextChanged 를 많이 사용한다.
실습 목적 : editText 창에 텍스트를 입력하면 실시간으로 Textview 에 나타내기
editText.addTextChangedListenr( new TextWatcher()
를 입력하면 아래에 세개의 메소드가 나타난다.
여기서 에디트텍스트창에 텍스트를 입력할 때마다 텍스트뷰에 텍스트를 나타내기 위해서는 afterTextChanged 에 코드를 작성하면 된다.
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
// 유저가 텍스트를 입력할 때 마다
// 텍스트뷰에 똑같이 입력한 문자를 표시 !
String text = editText.getText().toString();
textView.setText(text);
}
});
전체 코드
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<EditText
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="89dp"
android:ems="10"
android:inputType="textPersonName"
android:text="Name"
android:textSize="32sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="109dp"
android:gravity="center_horizontal"
android:text="TextView"
android:textSize="32sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/editText" />
</androidx.constraintlayout.widget.ConstraintLayout>
MainActivity.java
package com.dbrud1032.textwatcher;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
EditText editText;
TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = findViewById(R.id.editText);
textView = findViewById(R.id.textView);
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
// 유저가 텍스트를 입력할 때 마다
// 텍스트뷰에 똑같이 입력한 문자를 표시 !
String text = editText.getText().toString();
textView.setText(text);
}
});
}
}'Android' 카테고리의 다른 글
| 안드로이드 네트워크 통신을 위한 Volley 라이브러리 (0) | 2023.02.03 |
|---|---|
| 애뮬레이터에서 네트워크 통신 되도록 설정하는 방법 (0) | 2023.02.03 |
| 다른 액티비티로 데이터 전달 시, 클래스의 객체를 전달하는 방법 (0) | 2023.02.01 |
| getAdapterPosition - 리사이클러뷰에서 몇 번째 행을 눌렀는지 알 수 있는 어댑터의 함수 (0) | 2023.02.01 |
| recyclerView에서 새로운 Activity 실행하기 (0) | 2023.02.01 |