본문 바로가기
안드로이드 코틀린

[Kotlin][Android]textwatcher 활용해 글 변경 반응하기

by teamnova 2024. 10. 18.
728x90

오늘은 textwatcher를 활용해 코틀린 언어로 글 변경 이벤트에 반응하는 간단한 예시(EditText 뷰의 문자열이 바뀜에 따라 길이 가져오기)를 만들어 보여드리겠습니다

 

 

 

 

레이아웃 xml 파일 코드 (activity_main)

<?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"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <EditText
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        android:id="@+id/editText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="여기에 텍스트를 입력하세요" />

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintTop_toBottomOf="@id/editText"
        app:layout_constraintStart_toStartOf="parent"
        android:layout_marginTop="16dp"
        android:text="텍스트 길이: 0" />
</androidx.constraintlayout.widget.ConstraintLayout>

 

 

액티비티 코틀린 코드

class MainActivity : AppCompatActivity() {

    private lateinit var editText: EditText
    private lateinit var textView: TextView

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        editText = findViewById(R.id.editText) //텍스트 입력용 뷰
        textView = findViewById(R.id.textView) //텍스트 길이 표시뷰

        //텍스트 변경시 반응할 이벤트 설정
        editText.addTextChangedListener(object : TextWatcher {
            override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
                // 텍스트가 변경되기 전에 호출됨
            }

            override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
                // 텍스트 변경 시 호출됨
                textView.text = "텍스트 길이: ${s?.length ?: 0}"
            }

            override fun afterTextChanged(s: Editable?) {
                // 텍스트 변경이 완료된 후 호출됨
            }
        })
    }
}



 

 

 

 

 

실행 영상

 

 

EditText 뷰의 문자열이 바뀜에 따라 감지하여 문자열 길이 값 가져오는 것을 볼 수 있습니다.