이번 시간에는 이전 포스팅에 이어서 레이아웃에 직접 LiveData을 적용하는 방법에 대하여 알아보겠습니다.
이전 포스팅은 아래 링크를 들어가시면 됩니다.
2022.06.04 - [안드로이드] - [안드로이드 코틀린] LiveData 만드는 방법 part1 - 실시간 데이터 변경
- 설명 -
1. data태그로 감싼 variable 태그를 통해 변수를 선언합니다.
2. 텍스트뷰에는 score변수를 연결
3. 버튼에는 각 함수를 연결합니다.
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<data>
<variable
name="myVar"
type="com.kwon.kotlintutorial.MainViewModel" />
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<Button
android:id="@+id/plus_btn"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:text="더하기"
android:onClick="@{()->myVar.scorePlus()}"
android:textSize="25sp"/>
<TextView
android:id="@+id/score_text"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="8"
android:gravity="center"
android:text="@{myVar.score.toString()}"
android:textSize="150sp"/>
<Button
android:id="@+id/minus_btn"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:text="빼기"
android:onClick="@{()->myVar.scoreMinus()}"
android:textSize="25sp"/>
</LinearLayout>
</layout>
- 설명 -
1. binding.lifecycleOwner = this
생명주기 소유자 지정을 해야
LiveData가 작동합니다.
2. binding.myVar = mainViewModel
레이아웃에 선언한 변수에 viewModel을
적용합니다.
3. 레이아웃에 직접 LiveData를 적용했기
때문에 버튼 이벤트는 필요 없어졌습니다.
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
//뷰모델 선언
private lateinit var mainViewModel: MainViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
//binding 초기화
binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
//뷰모델 초기화
mainViewModel = ViewModelProvider(this).get(MainViewModel:: class.java)
//생명주기 셋팅
binding.lifecycleOwner = this
//변수에 viewModel 초기화
binding.myVar = mainViewModel
}
}
2022.05.19 - [안드로이드] - [안드로이드 코틀린] 변수 생성 및 변수 타입 만드는 방법
2022.05.20 - [안드로이드] - [안드로이드 코틀린] 배열 쉽게 만드는 방법
2022.05.21 - [안드로이드] - [안드로이드 코틀린] 반복문 For 만드는 다양한 방법
[안드로이드 코틀린] 커스텀 달력 만드는 방법 part2 이번 달, 저번 달, 다음 달 구현 (0) | 2022.06.07 |
---|---|
[안드로이드 코틀린] 커스텀 달력 만드는 방법 part1 화면 구성 (0) | 2022.06.06 |
[안드로이드 코틀린] LiveData 만드는 방법 part1 - 실시간 데이터 변경 (0) | 2022.06.04 |
[안드로이드 코틀린] ViewModel - 화면 회전 시 데이터 초기화 막는 방법 (0) | 2022.06.03 |
[안드로이드 코틀린] DataBinding 컴포넌트 쉽게 접근하는 방법 (0) | 2022.06.02 |
댓글 영역