[Andoird] 5. MVVM에 EditText 사용하기!

in #kr7 years ago (edited)

android_title_image.jpg

<h1>EditText<h4> <p dir="auto">EditText는 디바이스의 키보드를 이용하여 문자를 입력하는 뷰입니다. 입력하는 값은 <code>문자, 특수문자, 숫자등 으로 다양하지만 EditText가 입력 받고 반환하는 값은 오직 <code>String(문자열)입니다. EditText 값을 반환받아 적절한 변수형으로 변환하여 사용해야 합니다. <pre><code><EditText style="@style/edittext_large" android:layout_margin="5dp" android:text="@={vm.message}"/> <p dir="auto">EditText에 값을 적용하는 방법은 TextView와 동일합니다. 다만 TextView에서는 <code>android:text="@{vm.message}였고 EditText에서는<code>android:text="@={vm.message}"으로 <code>@옆에<code>=을 추가해 줍니다. 추가 이유는 EditText에 입력 받은 값을 바로 message 데이터에 적용해주기 때문입니다. <h1>입력한 문자 확인하기<h4> <p dir="auto">EditText에 입력된 문자를 확인하기 위해서는 <code>TextWatcher인터페이스가 필요합니다. <pre><code> 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) { } }); <p dir="auto">기존에는 위와 같은 형식으로 <code>TextWatcher를 바로 리스너로 등록했습니다. <p dir="auto">DataBinding에서는 기존의 <code>TextWatcher방식과 <code>메소드 방식이 있습니다. <h1>DataBinding TextWatcher<h4> <p dir="auto">DataBinding에 <code>TextWatcher적용은 기존 방식과 거의 동일합니다. 다만 변수형태로 만들어 주면 됩니다. <pre><code> 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) { } }; <p dir="auto">그리고 EditText에 적용해 주면 됩니다. <pre><code> <EditText style="@style/edittext_large" android:layout_margin="5dp" android:addTextChangedListener="@{vm.watcher}" android:text="@{vm.message}"/> <h1>DataBinding 메소드 방식<h4> <p dir="auto">메소드 방식은 <code>TextWatcher의 <code>onTextChanged()콜백 메소드 값만 받아 올 수 있습니다. 여기서 주의할 점은 반환값 및 파라미터가 완전히 동일해야 오류가 발생하지 안습니다. <pre><code> public void onTextChanged(CharSequence s, int start, int before, int count) { } <p dir="auto">EditText에 적용하는 방법은 다음과 같습니다. <pre><code> <EditText style="@style/edittext_large" android:layout_margin="5dp" android:onTextChanged="@{vm::onTextChanged}" android:text="@{vm.message}"/> <h1><a href="https://github.com/jhamin0511/AndroidStudy" target="_blank" rel="nofollow noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">AndroidStudy 예제<h4> <ul> <li><a href="https://github.com/jhamin0511/AndroidStudy/tree/master/app/src/main/java/com/steemit/jhm/androidstudy/mvvm/widget/edit" target="_blank" rel="nofollow noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">MVVM EditText
Sort:  

가상화폐 평가에서 스팀이 B-래요! (5위)
^^
좋은 컨텐츠가 즐거운 스티밋을 만드는거 아시죠?

감사합니다~ 꾸준히 좋은 컨텐츠 올리도록 하겠습니다~