이번 시간에는 ViewModel에 있는 score변수와 score의 값을 증가,
감소하는 메서드를 레이아웃에 직접 적용하는 방법에 대하여
알아보겠습니다. 이전 포스팅에 이어서 하니 먼저 보시고 오시면
됩니다.
2022.05.12 - [안드로이드] - [안드로이드] LiveData 만드는 방법 part1 - 실시간 데이터 변경
- 설명 -
1. data태그 안에 variable태그로 변수명과 타입을 정해줍니다.
2. 변수명(myVar)을 통해 MainViewModel의 변수와 메서드를
각각 버튼과 텍스트뷰에 연결합니다.
<?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.androidexam.MainViewModel" />
</data>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<Button
android:onClick="@{()-> myVar.scorePlus()}"
android:id="@+id/plus_btn"
android:layout_width="match_parent"
android:layout_height="100dp"
android:layout_alignParentTop="true"
android:text="더하기"
android:textSize="25sp" />
<TextView
android:text="@{String.valueOf(myVar.score)}"
android:id="@+id/score_text"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:textSize="100sp" />
<Button
android:onClick="@{() -> myVar.scoreMinus()}"
android:id="@+id/minus_btn"
android:layout_width="match_parent"
android:layout_height="100dp"
android:layout_alignParentBottom="true"
android:text="빼기"
android:textSize="25sp" />
</RelativeLayout>
</layout>
- 설명 -
1. binding.setLifecycleOwner(this)
- 생명주기 세팅을 합니다.
- 안 하면 데이터 적용이 안됩니다.
2. binding.setMyVar(mainViewModel)
- 화면에 만든 변수에 mianViewModel
을 적용합니다.
public class MainActivity extends AppCompatActivity {
ActivityMainBinding binding;
MainViewModel mainViewModel;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//초기화
binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
//ViewModel 초기화
mainViewModel = new ViewModelProvider(this).get(MainViewModel.class);
//기본값 지정
binding.scoreText.setText(String.valueOf(mainViewModel.score));
//생명주기 셋팅(안하면 데이터 업데이트 안됨)
binding.setLifecycleOwner(this);
//변수에 ViewModel 초기화
binding.setMyVar(mainViewModel);
}//onCreate
}//MainActivity
2022.04.29 - [안드로이드] - [안드로이드] LineChart 만드는 방법 part1 - 기본 구현
2022.04.08 - [안드로이드] - [안드로이드] Tab Custom Animation part1 - 화면 구성
2022.04.02 - [안드로이드] - [안드로이드] 같은 그림 찾기 게임 만드는 방법 part1 - 화면 구성
[안드로이드] Database Room 사용법 part2 - 데이터 등록 (0) | 2022.05.15 |
---|---|
[안드로이드] Database Room 사용법 part1 - Room 설정 (1) | 2022.05.14 |
[안드로이드] LiveData 만드는 방법 part1 - 실시간 데이터 변경 (0) | 2022.05.12 |
[안드로이드] ViewModel - 화면 회전 시 데이터 초기화 막는 방법 (0) | 2022.05.11 |
[안드로이드] DataBinding 컴포넌트 쉽게 접근하는 방법 (0) | 2022.05.10 |
댓글 영역