Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

서버 통신 Flow #37

Open
heechokim opened this issue Oct 24, 2021 · 0 comments
Open

서버 통신 Flow #37

heechokim opened this issue Oct 24, 2021 · 0 comments

Comments

@heechokim
Copy link
Member

heechokim commented Oct 24, 2021

  • ViewModel 클래스를 만든다.
  • ViewModel() 상속해서 만들면 된다.
  • 화면에 보여줘야 하는 데이터를 변수로 생성한다.
  • 화면에 보여줘야 하는 데이터는 model 폴더 안에 data class로 만들어 놓는다.
  • 변수의 타입을 MutableLiveData로 한 번 더 감싸줘야 한다.
  • 이 ViewModel 클래스를 사용할 곳에 가서 초기화 해주기
  • 초기화 할 때 사용하는 메소드 = ViewModelProvider(this).get(DibsViewModel::class.java)
  • 생성한 변수를 외부 클래스에서 접근할 수 있도록 getter랑 setter 함수를 public으로 만들어 놓기
  • getter 함수 = 생성한 변수를 반환
  • setter 함수 = 생성한 변수의 값을 변경, 서버 통신 함수를 호출하여 서버로부터 받아온 데이터로 변수 값 변경
  • FooddeukService(인터페이스) 에서 서버 API 함수를 모양만 정의한다. (retrofit에서 제공해주는 @get, @post, base URL 뒤에 붙는 파라미터들 설정)
  • FooddeukAPI(인터페이스에 있는 함수 실제 구현하는 곳)에서 FooddeukServiceImpl.service.만들어놓은 함수() 를 return하는 함수 생성
  • ViewModel setter 안 함수 내용 작성 = FooddeukAPI.함수.enqueue(object : Callback<List> {}) 쓰면 override 하라는 표시 뜸 onResponse()랑 onFailure() 오버라이드하고 onResponse() 안에 변수 값 변경 코드 작성
  • setter는 서버 호출이 필요한 곳에서 적절하게 호출해주면 됨
  • getter는 observe() 메소드를 호출해서 관찰하게 하다가, 데이터 변경이 관찰되면 할 일을 작성해주면 됨

Notes

  • 변수 생성시 여러 개를 해야할 때는 viewmodel에 여러개 때려박지 말구 model에 데이터 클래스에서 필요한 데이터들을 묶어놓는다
  • 연습한 open api : https://docs.github.com/en/rest/reference/repos
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant