[Andoird] 4. MVVM에 TextView 사용하기!

in #kr7 years ago (edited)

android_title_image.jpg

<h1>기초작업 <h4> <ul> <li><a href="https://steemit.com/kr/@jeonghamin/andoird-1-mvp-vs-mvvm-architecture" target="_blank" rel="nofollow noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">1. MVP vs MVVM Architecture 기초 <li><a href="https://steemit.com/kr/@jeonghamin/andoird-2-mvvm-databinding" target="_blank" rel="nofollow noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">2. MVVM에서 꼭 필요한 데이터 바인딩(DataBinding) 라이브러리 <li><a href="https://steemit.com/kr/@jeonghamin/andoird-2-mvvm-activity-view" target="_blank" rel="nofollow noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">3. MVVM에 사용 될 기초 Activity클래스 및 View인터페이스 만들기 <p dir="auto">MVVM 패턴을 안드로이드 프로젝트에 적용하기 위한 기초작업이 끝났습니다. 이제 본격적으로 MVVM 패턴을 이용한 Widget 사용 방법을 알아보도록 하겠습니다. <h1>Databinding Observable<h4> <p dir="auto">데이터를 View의 set함수 없이 자동으로 업데이트하기 위해서는 Databinding의 BaseObservable클래스를 상속할 필요가 있습니다. <pre><code>public class TextExViewModel extends BaseObservable { private final ObservableField<String> message = new ObservableField<>(); public TextExViewModel() { message.set("Hello World!"); } @Bindable public String getMessage() { return message.get(); } public void setMessage(String text) { message.set(text); notifyPropertyChanged(BR.message); } ... } <p dir="auto">상속 후 BaseObserbable의 <code>notifyPropertyChanged(int fieldId)함수를 이용하면 해당 데이터를 바인딩한 View를 자동으로 업데이트 합니다. <code>fieldId는 <code>@Bindable를 이용하여 Observable객체의 get함수를 정의하면 됩니다. 자세한 Observable 객체에 대한 설명은 <a href="https://developer.android.com/topic/libraries/data-binding/index.html?hl=ko#data_objects" target="_blank" rel="nofollow noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">데이터 객체에 자세히 나와있습니다. <h1>ViewModel XML 적용<h4> <p dir="auto">작성한 ViewModel를 XML에 적용하는 방법은 매우 쉽습니다. 다음과 같이 이름(vm)과 클래스 타입(TextExViewModel)를 XML파일에 입력하여 정의해 주면 됩니다. <pre><code><data> <variable name="vm" type="com.steemit.jhm.androidstudy.mvvm.widget.text.TextExViewModel"/> </data> <p dir="auto">그리고 TextExViewModel 클래스를 초기화 하여 binding에 적용(Bind) 해주면 됩니다. <pre><code>TextExViewModel vm = new TextExViewModel(); binding.setVm(vm); <h1>TextView<h4> <p dir="auto">TextView는 디바이스 화면에 내용을 보여주는 가장 기본적인 뷰입니다. 보통 <code>String값을 보여주나 <code>int, long, Date등 숫자나 날짜 등 다양한 변수형도 보여줄 수 있습니다. 다만 이 값들을 <code>String.valueOf() 함수 또는 <code>Format(Date)클래스를 사용하여 <code>String형태로 변환시켜야 합니다. <pre><code><TextView android:id="@+id/message" android:layout_width="wrap_content" android:layout_height="wrap_content" android:hint="Nothing Message" android:text="@{vm.message}"/> <p dir="auto">ViewModel에서 정의한 <code>getMessage()함수는 XML파일에서는<code>@{vm.message}형태로 사용됩니다. message변수에 있는 값(Hello World!)이 바로 TextView에 적용 됩니다. <p dir="auto"><img src="https://images.hive.blog/768x0/https://steemitimages.com/DQmXKe5LYMsUxFRZLAvtkNrCKNJT49ChertMAer4QUxCF7Y/Screenshot_1516723969.png" alt="Screenshot_1516723969.png" srcset="https://images.hive.blog/768x0/https://steemitimages.com/DQmXKe5LYMsUxFRZLAvtkNrCKNJT49ChertMAer4QUxCF7Y/Screenshot_1516723969.png 1x, https://images.hive.blog/1536x0/https://steemitimages.com/DQmXKe5LYMsUxFRZLAvtkNrCKNJT49ChertMAer4QUxCF7Y/Screenshot_1516723969.png 2x" /> <p dir="auto"><img src="https://images.hive.blog/768x0/https://steemitimages.com/DQmTLYKb4ZRcrsZ6WXkToYdMfxxg7yAkn8Ns8SFYynyfmR3/Screenshot_1516723972.png" alt="Screenshot_1516723972.png" srcset="https://images.hive.blog/768x0/https://steemitimages.com/DQmTLYKb4ZRcrsZ6WXkToYdMfxxg7yAkn8Ns8SFYynyfmR3/Screenshot_1516723972.png 1x, https://images.hive.blog/1536x0/https://steemitimages.com/DQmTLYKb4ZRcrsZ6WXkToYdMfxxg7yAkn8Ns8SFYynyfmR3/Screenshot_1516723972.png 2x" /> <p dir="auto">데이터를 값을 변경하기 위해<code>setMessage(String text)함수를 사용하면 TextView가 자동으로 업데이트 됩니다. <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/text" target="_blank" rel="nofollow noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">MVVM TextView
Sort:  

어제가 제일 추운줄 알았는데!
오늘이 더 춥습니다. ㅜㅜ
좋은 컨텐츠가 즐거운 스티밋을 만드는거 아시죠?