1. 기존 int 타입에서 MutableLiveData <Integer>로변경되었습니다.
이번 시간에는 LiveData 만드는 방법을 알아 보겠습니다.
이전 포스팅에 이어서 하겠습니다.
score변수의 값을 -1 하는 scoreMinus()
score변수의 값을 +1 하는 scorePlus()에는
공통적으로 score변수의 값이 변경되었으니,
변경된 score변수의 값을 텍스트뷰에 적용
하는 binding.scoreText.setText가 있습니다.
LiveData를 사용하게 되면 필요 없어집니다.
이전 포스팅은 아래 링크를 들어가시면 됩니다.
2022.05.11 - [안드로이드] - [안드로이드] ViewModel - 화면 회전 시 데이터 초기화 막는 방법
- 설명 -
1. 기존 int 타입에서 MutableLiveData <Integer>로변경되었습니다.
2. score변수는 setValue()로 값을 변경 할 수 있고, getValue()로 값을 가져올 수 있습니다.
public class MainViewModel extends ViewModel {
public MutableLiveData<Integer> score = new MutableLiveData<>();
public MainViewModel() {
Log.d("MainViewModel", "MainViewModel 생성");
score.setValue(0);
}
@Override
protected void onCleared() {
super.onCleared();
Log.d("MainViewModel", "MainViewModel 종료");
}
public void scorePlus(){
score.setValue(score.getValue() +1);
}
public void scoreMinus(){
score.setValue(score.getValue() -1);
}
}
- 설명 -
1. score.observe를 통해 score의 값이
변경되면 실시간으로 알 수 있습니다.
2. score.observe 덕분에 버튼 이벤트에
들어있는 binding.scoreText.setText가
필요 없어졌습니다.
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));
//score변수의 변화를 감지
mainViewModel.score.observe(this, new Observer<Integer>() {
@Override
public void onChanged(Integer integer) {
//score값이 변경되면 변경된 score값을 텍스트뷰에 넣어준다
binding.scoreText.setText(String.valueOf(mainViewModel.score.getValue()));
}
});
//마이너스 버튼
binding.minusBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mainViewModel.scoreMinus();
}
});
//플러스 버튼
binding.plusBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mainViewModel.scorePlus();
}
});
}//onCreate
}//MainActivity
2022.04.29 - [안드로이드] - [안드로이드] LineChart 만드는 방법 part1 - 기본 구현
2022.02.09 - [안드로이드] - [안드로이드] 패턴(patternLockView) 잠금 쉽게 만드는 방법
2022.01.27 - [안드로이드] - [안드로이드] 밀어서 날짜 변경하는 달력(SlideDatePicker) 쉽게 만드는 방법
[안드로이드] Database Room 사용법 part1 - Room 설정 (1) | 2022.05.14 |
---|---|
[안드로이드] LiveData 만드는 방법 part2 - 레이아웃에 ViewModel 직접 적용 (0) | 2022.05.13 |
[안드로이드] ViewModel - 화면 회전 시 데이터 초기화 막는 방법 (0) | 2022.05.11 |
[안드로이드] DataBinding 컴포넌트 쉽게 접근하는 방법 (0) | 2022.05.10 |
[안드로이드] HTTP 통신 Volley 사용법 part3 - Image 요청 및 응답 (0) | 2022.05.09 |
댓글 영역