728x90
반응형

viewmodel 8

<정리> 심화 개인과제 5

이제 오늘 지나면 제출일이다. 오늘 한 것은... 챌린지반 복습하느라 그렇게 많지 않다. 보완과 약간의 기능 추가 정도? 1. 뷰모델로 옮긴 함수 이전에 검색 결과 페이지에 있던 데이터 요청 함수를 뷰모델로 옮겼다. 이로인해 뷰모델로 현재 EditText의 텍스트값만 넘겨주면 됐고 업데이트는 옵저버를 통해 할 수 있게 되었다. 아래는 첫번째로 검색할 때에 대한 내용이고 스크롤을 최하단으로 내렸을 때 데이터를 받아오는 것도 아래 코드처럼 작성했다. btnSearch.setOnClickListener { viewModel.processFirstSearch(etSearch.text.toString()) goToFirstState() } =========================================..

Android/StoreInfo 2024.01.31

<정리> 심화 개인과제 4

오늘은 좀 여유있게 진행할 수 있었다. 구현할 게 얼마 남지 않기도 했고 시간도 아직 여유가 좀 있었기 때문이다. 그래서 거의 마무리라고 생각되는 정도까지 도착해서 이른 오후에 정리해놓으려고 한다. 이제 여기서 더 한다면 어떤 기능들을 넣어야할지 생각을 내가 스스로 하고 넣어야하는 것이기 때문에 쉽지 않다... 하라는걸 하는데에는 크게 어려움을 느끼지 않는 경우가 많은데 처음부터 알아서 하라고 하면 좀 어려움을 느끼는 경우가 많다. 1. 뷰모델 팩토리 사용 이걸 사용하게 된 계기는 SharedPreferences다. 저번 글에서도 말했지만 나는 이걸 뷰모델 안에서 호출하고 싶었다. 하지만 SharedPreferences를 만들 때는 Context가 필요했고 뷰모델에는 존재하지 않았다. 그래서 이리저리 방..

Android/StoreInfo 2024.01.30

<정리> 심화 개인과제 3

저번주 금요일에 진행상황을 정리했어야 했지만 거의 자정까지 이어진 개발로 인해 오늘에 몰아서 작성한다. 다행히 금요일날 물고 늘어진 건 잘 해결이 됐고 오늘은 그 이후 딱 한가지 무한 스크롤 전까지 해결을 하며 B타입의 마무리가 보이고 있다. 물론 MVVM 패턴을 완벽하게 적용하지 못해서 이 부분은 튜터님께 물어보러 가야겠지만... 중간중간 정리하면서 했으면 차례대로 적을 수 있겠지만 몰아서 하는 것이기 때문에 실제 진행했던 순서와는 많이 다를 예정이다. 1. isSelected 변수 추가 이건 이전에 선택한 데이터들을 모아두는 리스트를 메인 액티비티에서 구성하는거 말고 다르게 하기 위해 선택한 방법이다. 데이터 클래스에 이 isSelected 변수를 추가했다. 이걸 넣는거 때문에 API 사용해서 데이터..

Android/StoreInfo 2024.01.29

<정리> 챌린지반 과제2 - 3

아... 쉽지 않다 쉽지않아 어떻게 이렇게 짤 생각을 하셨는지 지금의 나는 영~ 모르겠다! 그래도 어떻게든 따라가려고는 하는데 마무리하고 나서 보니까 이게 또 짜던 대로 짠 거 같기도 한 느낌..? 많은 변화가 있었고 하나씩 되돌아보자 엔트리타입은 넘어가도 되겠죠...? [깃허브] https://github.com/heesoo-park/ChallengeRecruitAssignment/tree/week2_contain_ListAdapter 1. 대대적인 이름 변경 뭔가 읽으면서 직관적이지 않다고 생각이 들거나, 이름에 정보가 부족하다 싶은 부분들을 수정하고 보완했다. 클래스, 변수, 파일명 가리지 않고 많이 바뀌어서 이전 포스팅과 다른 이름이 자주 나올 것이다. 2. DataStore 삭제 & TodoLi..

Android/StoreInfo 2024.01.25

<정리> 챌린지반 과제2 - 2

저번까지 한 것에 이어서 선택과제였던 할일 등록 기능을 MVVM 패턴으로 구현하는 걸 혼자서 해보았다. 힌트에 기반하여 저번 코드에서 변경된 부분과 추가된 부분이 있다. [깃허브] https://github.com/heesoo-park/ChallengeRecruitAssignment/tree/week1_contain_MVVM 1. 할일 저장소 생성 각각의 프래그먼트에서 사용하던 더미데이터를 object 클래스인 DataStore로 모았다. 그리고 거기서 함수를 만들어 할일을 추가할 수 있도록 했다. object DataStore { private val totalTodoList: ArrayList = ArrayList() init { totalTodoList.add( Todo( "title 0", "de..

Android/StoreInfo 2024.01.23

<정리> 챌린지반 과제 2

오늘 수업을 들었다. 흐음... 뷰모델을 잘 썼다고 생각했었는데 너무나 많이 부족했다. 다 한 사람이나 어느 정도 완성한 사람 손 들어보라고 해서 들었던 내가 부끄러웠다...ㅎ 그래서 수업을 마치고 달리기 시작했다. 1. Spinner 관리 이게 진짜 제일 어렵고 이해 안되고 머리를 띵- 하게 만들고 결국 약간의 타협으로 결과가 나온 부분이다. 참 여러가지 상황이 나왔다. 스피너가 클릭 이벤트를 무시하거나 넘어가거나 튕기거나... 이러한 상황을 유발하는데 가장 큰 공헌을 한 것은 관리하는 변수에 대한 역할을 크게 잡았다는 것이다. 조금 더 작게 나누니까 해결이 되더라 처음에 나는 서비스제공자를 가지고 EditText 텍스트 값도 채우고 스피너의 값도 조절하려고 했었다. 이렇게 했더니 원하지 않을 때 실행..

Android/StoreInfo 2024.01.08

<정리> 챌린지반 과제 1

예전에 자기소개 앱 구현 글에서 이어지는 거지만 이제는 앱 구현이 아니라 세부 기능들에 대한 조정과 최적화만 들어가있기 때문에 따로 글을 뺐다. 저번 글 이후로 벌써 2주나 지났다... 아마 계속 지금 프로젝트에 겹쳐서 진행이 될 거 같아 또 시리즈로 적어나갈 생각이다. 1. enum class 나는 enum class를 쓰라고 하셨을 때 도대체 어디에 쓰라고 하시는건가 싶었다. 그래서 이 부분은 손도 안 대고 갔었는데 에러 메세지를 한 곳에 모아놓는데 사용할 수 있다는 걸 알게 되었다. 또한 액티비티 이동 간 엔트리 타입들을 모아놓는데에도 사용하는 것도 봤다. 첫 번째로 에러 메세지를 모아둔 enum class다. enum class SignUpErrorMessage( @StringRes val mes..

Android/StoreInfo 2024.01.05

ViewModel에 대한 이해

1. ViewModel 소개 MVVM 디자인 패턴으로부터 파생된 ViewModel은 Android Jetpack의 구성요소 중에 하나이고 Android Architecture Components 중에 하나이며, 비즈니스 로직 또는 화면 수준 상태 홀더다. UI에 상태를 노출하고 관련 비즈니스 로직을 캡슐화한다. 좀더 덧붙이면 UI 컨트롤러의 로직에서 UI에 노출되는 데이터를 다루는 로직을 분리하기 위해 등장한 요소이다. 장점은 UI 관련 데이터를 저장하고 관리하여 UI 상태를 유지함으로 여러 구성 변경에도 이를 유지한다는 것과 비즈니스 로직에 대한 액세스 권한을 제공한다는 것이다. 기존에 UI 관련 데이터를 가지는 일반 클래스로 UI 데이터를 표시했는데 이는 이벤트나 화면 이동할 때 문제가 될 수 있었다..

Android/StoreInfo 2024.01.02
반응형