이번에 리싸이클러뷰 공부를 다시 해봤다.
옛날 코드랩자료가 내용이 좋은거 같아서 해봤는데,
소스가 오래된거라 빌드에 문제가 있는부분이 있었다.
가능한 옛날 소스로 공부를 하지 않도록 해야겠다.
기존에 제대로 몰랐던 부분을 제대로 알게 되는 부분도 있었다.
리싸이클러뷰를 단순히 만드는거는 쉽지만, 여러 기능을 추가하게 되면 복잡해진다.
그리고 리싸이클러뷰 구현하는 부분은 좀 쉬웠는데, 데이터바인딩, 네이게이션도 제대로 모르니 전체적으로 마냥 쉽지는 않았다.
아래는 이번에 공부했던 자료들 링크와
그 링크에서 배운점을 붉은색으로 강조해서 표시해두었다.
공부자료들
========================================
// 안드 공식홈 - docs - UI Guide
(Create dynamic lists with RecyclerView) (ok, 문서자체에는 별다는 내용이 없다.)
https://developer.android.com/develop/ui/views/layout/recyclerview
(Create dynamic lists with RecyclerView) (ok, 문서자체에는 별다는 내용이 없다.)
https://developer.android.com/develop/ui/views/layout/recyclerview-custom
(공식홈 doc에 있는 샘플앱)
https://github.com/android/views-widgets-samples/tree/main/RecyclerViewKotlin/
========================================
// 안드 공식홈 - jetpack - 라이브러리
(RecyclerView release note) (이거 영어문서로 봐야하는듯, 변경사항들이라 딱히 볼 필요는 없을듯.)
https://developer.android.com/jetpack/androidx/releases/recyclerview
(doc - reference -androidx.recyclerview.selection) (거의 안드 가이드 문서랑 중복되는 내용인듯)
https://developer.android.com/reference/androidx/recyclerview/selection/package-summary
========================================
// 옛날 fundermental codelab (일단 이거 먼저 해보자)
(이 코드랩은 deprecated된거라서 이것보다는 새로 나온것들은 하는게 나을 겁니다.)
(나는 이미 새로나왔던 코드랩은 예전에 해봐서 이걸로 복습 해보게 되었다.)
(Android Kotlin Fundamentals:RecyclerView fundamentals) (ok)
https://developer.android.com/codelabs/kotlin-android-training-recyclerview-fundamentals#0
→ viewholder에서 bind부분에 뷰속성을 건들게 되면, 재활용되면서 문제가 생기는데
이것을 해결하는게 else문을 구현해야한다는 것을 배웠다. 예전에는 이것을 해결을 못해서
재활용이 안되게? 만들었는데.. else를 구현해야하는 것이었다…
(https://developer.android.com/codelabs/kotlin-android-training-recyclerview-fundamentals#3에서 Step 6: Explore how view holders are recycled에 대한 내용)
그리고 ViewHolder내에 bind함수, from함수로 리펙토링하는 내용을 알려주고 있다.
(ok)
(Android Kotlin Fundamentals:07.2 DiffUtil and data binding with RecyclerView)
https://developer.android.com/codelabs/kotlin-android-training-diffutil-databinding#0
diffutil만들고, 리싸이클러뷰 내부에 findviewbyid를 제거하고 binding으로 변경,
bind함수에서 연결하는 작업을 bindingAdapter로 빼내는 작업을 함.
diffutil에 대한 설명이 부실하고, data binding은 보면 볼 수록 별로인것 같다.
(ok, 별 내용 없었음)
(Android Kotlin Fundamentals:GridLayout with RecyclerView)
https://developer.android.com/codelabs/kotlin-android-training-grid-layout#0
(ok)
(Android Kotlin Fundamentals:Interacting with RecyclerView items)
https://developer.android.com/codelabs/kotlin-android-training-interacting-with-items#0
집에서 mac으로 연습해보려하니, build가 터진다..
room을 m1에서 쓰려면 대강 2.4.1 버전? 이상을 써야한다는데.. 이거를 올려도 줘터지는게 한두개가아니다.
나름 빌드스크립드 부분을 공부했었지만.. agp.. gradle.. 부터.. 자바 호환성? 1.7… 1.8 , compileSdk33으로… 정확하게 아는게 없어서 건드리기도 힘들다.
일단, 옛날 소스들 3~4년된 예제는 건드리지 않는게 좋겠다. → 만약 건드려야하면, 빈프로젝트를 만들고 디펜던시들 최신으로 넣어서 돌리는게 좋을듯한데 디펜던시 최신으로 바꾸면 또, 소스코드들에서 문제가 생길테고…
그리고 개발할때는 pc를 한대로 하는게 좋을듯하다. mac - window 개발환경은 다르다.
보이는 족족 무지성으로 수정해서 run을 성공하긴했다.
room문제를 m1에서 대응하는 소스 한줄 넣으니까 임시방편으로 바로 해결되는데, 이것으로 사용하고,
아까 했던 작업은 날리고, git도 커밋했던거 없애고 브랜치도 삭제했다.. 빌드 문제로 1시간반 가량 날렸다..
( kaptDebugKotlin 빌드 이슈 해결 ( feat. m1 ) - https://superwony.tistory.com/164 )
(ok)
(Android Kotlin Fundamentals:Headers in RecyclerView)
https://developer.android.com/codelabs/kotlin-android-training-headers#0
(깃 저장소 - 스타터)
https://github.com/google-developer-training/android-kotlin-fundamentals-starter-apps
(깃 저장소 - 솔루션)
https://github.com/google-developer-training/android-kotlin-fundamentals-apps
========================================
// 유튜브에 리싸이클러뷰 관련 영상
// 복잡한 RecyclerView, 군더더기 없이 데이터로 표현하기
→ 뭘 하려는지는 알겠는데, 코드레벨은 이해안되고, 컴포즈가 선녀로 보이게 되었다..
// RecyclerView ins and outs - Google I/O 2016
→ 영어가 안되니, 내용도.. 이해가 안된다, 내가 알던 리싸이클럽가 아니다..
========================================
// 앞으로 할 것
- 개인 프로젝트
컴포즈로 시작할지 xml로 시작할지 고민이 된다..
'Android > Kotlin in android' 카테고리의 다른 글
안드로이드 버튼 android:src와 app:srcCompat 두 속성의 차이점 (with. chatgpt) (0) | 2024.02.23 |
---|---|
android android:gravity와 android:layout_gravity의 차이 (0) | 2023.08.25 |
코루틴coroutine &플로우flow 학습 했던거 회고 (0) | 2023.04.25 |
뷰 바인딩 (View Binding) (0) | 2022.10.27 |
힐트 hilt 공부 방법, 용어 메모, ide에서 아이콘설명 (개인공부) (0) | 2022.10.15 |