0. 이전 글:
2018/12/04 - [Android 공부] - 안드로이드 DataBinding?? MVVM??
1. 문제점:
1-1. 코드:
<EditText
android:id="@+id/userInputET"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.169" />
<Button
android:id="@+id/loginBtn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/userInputET"
app:layout_constraintVertical_bias="0.056"
android:onClick="@{(view) -> userVM.updateTextView(userIdTextView,userInputET)}"/>
1-2. 문제 :
EditText의 text를 뽑아내고 싶었지만, 그럴 수 없었고 차선책으로 Button에서 click시에
userVM.updateTextView()라는 매소드에 EditText를 변수로 해서 이동시켜서 getText() 했었습니다.
2-1. 개선사항:
2way databinding을 이용하게 되면 우리가 관리하고 있는 변수에 xml의 값을 넣을 수 있다는 것을 알 수 있었습니다.
2-2. 출처:
https://developer.android.com/topic/libraries/data-binding/two-way
2-3. 개선된 코드:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | <EditText android:id="@+id/userInputET" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@={userVM.userInfos.currentName}" android:layout_marginStart="8dp" android:layout_marginTop="8dp" android:layout_marginEnd="8dp" android:layout_marginBottom="8dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="0.169" /> <Button android:id="@+id/loginBtn" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginStart="8dp" android:layout_marginTop="8dp" android:layout_marginEnd="8dp" android:layout_marginBottom="8dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/userInputET" app:layout_constraintVertical_bias="0.056" android:onClick="@{(view) -> userVM.updateTextView(userIdTextView)}"/> | cs |
2-4. 해석 :
5번 째 줄에, @={data}를 통해서 editText의 값을 넣을 수 있다는 것을 확인했고,
해당 변수는 MutableLivedata<String>으로 onClick시에 updateTextView()를 통해서
해당 변수를 호출해서 textView에 값을 set할 수 있다.
'Android 공부' 카테고리의 다른 글
Retrofit을 통한 Naver 영화 API 사용하기 (0) | 2018.12.17 |
---|---|
Android 2way databiding - bindingAdapter(2) (0) | 2018.12.12 |
LiveData의 간단한 예제 (0) | 2018.11.30 |
android.arch.lifecycle (0) | 2018.11.30 |
안드로이드 유튜브 플레이어 예제 (0) | 2018.10.24 |