관련 PR

게시글을 작성할 때 각 블록에 EditText가 존재하는데, EditText 내 텍스트가 변경될 때 내용을 ViewModel의 데이터에 바로 반영하기 위해 처음에는 afterTextChanged 같은 리스너를 추가해 구현하려고 했었다.

하지만 해당 블록이 화면에서 사라질 때, 즉 onViewDetachedFromWindow가 호출될 때 EditText 내의 텍스트 값은 없어지지만, 리스너는 살아있기 때문에 없어진 텍스트 값이 ViewModel의 데이터에 반영되는 문제를 발견했다.

그래서 TextWatcher를 구현하고 인스턴스를 생성한 후, itemView가 attach될 때 addTextChangedListener() 메소드를 통해 textWatcher도 같이 추가해주고, detach될 때 removeTextChangedListener() 메소드를 통해 textWatcher를 제거해주는 방식으로 해당 문제를 해결하였다.