본문 바로가기
프로그래밍/Android

[Android] EditText 변경시 이벤트(TextWatcher)

by Youngs_ 2021. 9. 28.
    private fun initTextChange() {
        binding.editTextName.addTextChangedListener(object:TextWatcher{
            override fun afterTextChanged(p0: Editable?) {
                val test = Toast.makeText(requireContext(),"변경",Toast.LENGTH_LONG)
                test.show()
            }
            override fun beforeTextChanged(text: CharSequence?, start: Int, count: Int, after: Int) {

            }
            override fun onTextChanged(p0: CharSequence?, start: Int, before: Int, count: Int) {

            }
        })
    }
    //binding.editTextName은 XML에서 editTextName으로 editText를 생성 한 후 뷰바인딩으로 묶어야한다.

 

■ beforeTextChanged(CharSequence s. int start, int count, int after)

  • CharSequece s : 현재 EditText에 입력된 값
  • int start : s에 저장된 문자열에서 새로 추가될 문자열의 시작 위치 값
  • int count : s에 새로운 문자열이 추가된 후 문자열의 길이
  • int after : 새로 추가될 문자열의 길이

■ onTextChanger(CharSequence s, int start, int before, int count)

 

start 위치에서 before 문자열 개수만큼 문자열이 count 개수만큼 변경되었을 때 호출

  • CharSequence s : 새로 입력한 문자열이 추가된 EditText의 값을 가지고 있음
  • int start : 새로 추가된 문자열의 시작 위치 값
  • int before : 삭제된 기존 문자열의 개수
  • int count : 새로 추가된 문자열의 개수 

■ afterTextChanged(Editalbe a)

 

EditText의 Text가 변경된 것을 다른 곳에 통보할 때 사용됩니다. a.toString()을 통해 현재 EditText의 Text 값을 불러오는 게 가능

EditText의 Text 변경에 따른 함수 호출 순서는  beforeTextChanged -> onTextChanger -> afterTextChanged

댓글