상세 컨텐츠

본문 제목

[안드로이드] LiveData 만드는 방법 part1 - 실시간 데이터 변경

안드로이드

by aries574 2022. 5. 12. 12:51

본문


1. 기존 int 타입에서 MutableLiveData <Integer>로변경되었습니다. 

이번 시간에는 LiveData 만드는 방법을 알아 보겠습니다.

이전 포스팅에 이어서 하겠습니다.

 score변수의 값을 -1 하는 scoreMinus()

 score변수의 값을 +1 하는 scorePlus()에는

공통적으로 score변수의 값이 변경되었으니,

변경된 score변수의 값을 텍스트뷰에 적용

하는 binding.scoreText.setText가 있습니다.

LiveData를 사용하게 되면 필요 없어집니다.

이전 포스팅은 아래 링크를 들어가시면 됩니다.

2022.05.11 - [안드로이드] - [안드로이드] ViewModel - 화면 회전 시 데이터 초기화 막는 방법

 

[안드로이드] ViewModel - 화면 회전 시 데이터 초기화 막는 방법

 이번 시간에는 화면 전환 시 데이터가 초기화되는 현상을 막는 방법에 대하여 알아보겠습니다. 이전 포스팅에 이어서  진행하니 미리 보고 오시면 되겠습니다. 2022.05.10 - [안드로이드] - [안드

aries574.tistory.com


목차 

1. 실행 화면

2. ViewModel 클래스 수정

3. 메인 코드 수정 MainActivity.java

4. 실행 화면


1. 실행 화면

 

2. 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);
    }
}

 

 

3. 메인 코드 수정 MainActivity.java

 - 설명 - 

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 - 기본 구현

 

[안드로이드] LineChart 만드는 방법 part1 - 기본 구현

이번 시간에는 LineChart를 만드는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 라이브러리 등록 3. 메인 화면 구성 activity_main.xml 4. 메인 코드 구현 MainActivity.java 1. 실행 화면 2. 라이브러리 등록..

aries574.tistory.com

2022.02.09 - [안드로이드] - [안드로이드] 패턴(patternLockView) 잠금 쉽게 만드는 방법

 

[안드로이드] 패턴(patternLockView) 잠금 쉽게 만드는 방법

이번 시간에는 안드로이드 패턴 잠금 쉽게 만드는 방법에 대하여 알아보겠습니다. 목차 1. 실행 화면 2. 라이브러리 등록 3. 메인 화면 구성 activity_main.xml 4. 메인 코드 구현 MainActivity.java.

aries574.tistory.com

2022.01.27 - [안드로이드] - [안드로이드] 밀어서 날짜 변경하는 달력(SlideDatePicker) 쉽게 만드는 방법

 

[안드로이드] 밀어서 날짜 변경하는 달력(SlideDatePicker) 쉽게 만드는 방법

이번 시간에는 밀어서 날짜 변경하는 달력을 쉽게 만들 수 있는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 라이브러리 등록 3. 메인 화면 구성 activity_main.xml 4. 메인 코드 구현 MainActivity.j

aries574.tistory.com

 

 

반응형

관련글 더보기

댓글 영역