[Andoird] 5. MVVM에 EditText 사용하기!
EditText
EditText는 디바이스의 키보드를 이용하여 문자를 입력하는 뷰입니다. 입력하는 값은 문자, 특수문자, 숫자
등 으로 다양하지만 EditText가 입력 받고 반환하는 값은 오직 String(문자열)
입니다. EditText 값을 반환받아 적절한 변수형으로 변환하여 사용해야 합니다.
<EditText
style="@style/edittext_large"
android:layout_margin="5dp"
android:text="@={vm.message}"/>
EditText에 값을 적용하는 방법은 TextView와 동일합니다. 다만 TextView에서는 android:text="@{vm.message}
였고 EditText에서는android:text="@={vm.message}"
으로 @
옆에=
을 추가해 줍니다. 추가 이유는 EditText에 입력 받은 값을 바로 message 데이터에 적용해주기 때문입니다.
입력한 문자 확인하기
EditText에 입력된 문자를 확인하기 위해서는 TextWatcher
인터페이스가 필요합니다.
editText.addTextChangedListener(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) {
}
@Override
public void afterTextChanged(Editable s) {
}
});
기존에는 위와 같은 형식으로 TextWatcher
를 바로 리스너로 등록했습니다.
DataBinding에서는 기존의 TextWatcher
방식과 메소드
방식이 있습니다.
DataBinding TextWatcher
DataBinding에 TextWatcher
적용은 기존 방식과 거의 동일합니다. 다만 변수형태로 만들어 주면 됩니다.
public TextWatcher watcher = 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) {
}
@Override
public void afterTextChanged(Editable s) {
}
};
그리고 EditText에 적용해 주면 됩니다.
<EditText
style="@style/edittext_large"
android:layout_margin="5dp"
android:addTextChangedListener="@{vm.watcher}"
android:text="@{vm.message}"/>
DataBinding 메소드 방식
메소드 방식은 TextWatcher
의 onTextChanged()
콜백 메소드 값만 받아 올 수 있습니다. 여기서 주의할 점은 반환값 및 파라미터가 완전히 동일해야 오류가 발생하지 안습니다.
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
EditText에 적용하는 방법은 다음과 같습니다.
<EditText
style="@style/edittext_large"
android:layout_margin="5dp"
android:onTextChanged="@{vm::onTextChanged}"
android:text="@{vm.message}"/>
가상화폐 평가에서 스팀이 B-래요! (5위)
^^
좋은 컨텐츠가 즐거운 스티밋을 만드는거 아시죠?
감사합니다~ 꾸준히 좋은 컨텐츠 올리도록 하겠습니다~