트러블 슈팅 :
처음 있었던 문제:
- 초기화 문제 : lateinit을 by lazy로 바꾸어 주니까 해결
- invoke method 문제 : 라이브 데이터 초기값 넣어줌으로써 해결
- 리포지토리에 있는 값을 넘겨 오는데 한템포 지연되는 문제 : 아직 해결 못함.
- 멀티 뷰타입에 있는 값이 업데이트가 안되는 문제 : submit 리스트 위치 확인하면서 해결
- 멀티 뷰타입 안에있는 리사이클러뷰가 업데이트 안되는 문제 : adapter notify해줘야함. -> notify 해줬는데 [java.lang.IllegalStateException: Cannot call this method while RecyclerView is computing a layout or scrolling] 에러가 뜸. -> 백그라운드 스레드로 노티파이가 옮겨가서 에러가 뜬거라고 한다. MVVM 적용을하면서 비동기가 되었으니 말이되는듯? -> 그래서 코드 이렇게 바꿈 : binding.rvHori.post(Runnable { adapter.notifyDataSetChanged() })
- 멀티뷰타입 안에 있는 리사이클러뷰에 애초에 아이템 정보를 가지고 있는 어레이리스트를 넘겨주지 않고 있당. 코드 정리하면서 빼먹은 부분이 있는 것 같다. -> 홈 프래그먼트에서 값을 넘겨주기로 함. 멀티뷰타입어댑터에 생성자를 변수를 추가하고 그 값에 리사이클러뷰에 들어갈 어레이리스트를 넘겨줌. 그런데 이 어레이리스트를 리포지토리에서 가져와야 하기 때문에 어댑터를 홈 프래그먼트 안에서 지연초기화 해주고, 어레이 리스트가 옵져빙이 되었을 때 인스턴스를 생성해주었다. 그리고 써브밋 ㄱㄱ.
처음에 어댑터를 변수로 선언해주고 어댑터를 한번 더 인스턴스 생성하니까 아래와 같은 오류가 났었음. [ java.lang.IllegalStateException: Fragment HomeFragment{f7f2424} (18858a2b-e75f-44dd-9fad-a265ae449e0b) not attached to a context.] -> 어댑터를 두번 정의해줘서인감?ㅇㅇ 맞아용
갑자기 궁금한것.. --옵져빙을 할 때 순서가 있남?? -- 또 리포지토리에서 뷰모델로 값을 넘겨받아올 때 라이브데이터를 사용했다. 사용하기 싫은데 방법을 모르겠당.. 초반에 계속 오류 떠서 원래 하던 방식으로만 하게 되는것 같당
'내일배움캠프 (스파르타 코딩 클럽) 안드로이드 2기 > TIL' 카테고리의 다른 글
listAdapter 아이템이 update될 때 깜빡이는 이쓔 (0) | 2024.03.08 |
---|---|
룸 디비 연결 후에 나타난 에러 트러블 슈팅 과정 (0) | 2024.03.07 |
코틀린| MVVM & 파이어스토어 데이터베이스에서 데이터 가져오기 (1) | 2024.03.06 |
[TIL] 숙련주차 회고 KPT (0) | 2024.01.23 |
[TIL] 커스텀 다이얼로그 Positive Button 활성화 / (0) | 2024.01.17 |