1,2단계 피드백
- Scrollview와 동일하게 동작
- But, 추가적으로 중첩된 스크롤을 지원
- 내부 자식 요소에 스크롤 가능한 컴포넌트가 있어도 자연스럽게 스크롤 가능
- 리사이클러뷰가 두개가 있을 때 여기서 넣으면 한번에 스크롤 가능
- 그냥 ScrollView로 감쌌을 때 작동안함.
- NestedScrollView로 감싸면 스크롤 잘됨
- 하지만 하위의 RecyclerView가 더 이상 재활용되지 않음
- 화면에 보여지지 않는 뷰도 한번에 로딩됨
(layoutInspector하면 기기와 연결이 되서 미리 리사이클러뷰 적용된거 확인 가능)
- 현업에선 NestedScrollView 자주사용하는 친구다~!
ViewType
- 리사이클러뷰인 뷰타입을 가져 두개의 리사이클러뷰 생성
- 상품과 최근 본 목록을 들고 있는 클래스의 인터페이스를 생성해야한다.
sealed interface ProductViewType {
val viewType: Int
data class Product(
val name: String
): ProductViewType
data class RecentlyViewedProducts(
val products: List<Product>
): ProductViewType
}
어탭터 하나로도 가능.....HOW?
ConcatAdapter
- 여러 어댑터를 하나의 리사이클러뷰로 묶어줌
- 하지만 항상 정답은 아님
- ConcatAdapter.Config와 내부 동작에 대한 이해가 부족한 채로 사용하면 예상치 못한 부수 효과로 이어질 수도....
- 특정 설계에선 재활용이 안되는 문제가 생길 수 도 있고 생각보다 간단하지 않다.
그럼 뭐선택해?
- 정답 없어.
- 개발자마다 선호 방식이 다르다
- 자신의 판단해서 명확인 이유를 댈 수 있는 걸로 선택해서 구현하자.
미션 설계 시 고려할 점
-
설계에서 많은 시간을 할애하는게 중요하다
-
변경사항이 생긴다면? 앱ㅇ 새로운 도메인이 추가된다면...? 이런 고민들을 해야함
-
라이프사이클에 바인딩을 했을 때 문제가 일어날 수 있음.
-
상품을 조회하지 않아도 돌때마다 데이터를 계속 불러오지 않을지 이런 이슈..
-
로컬저장소 선택 기준도 본인이 정해서 해라
-
알람때는 SharedPreference가 편함.
-
하지만 목록 리스트는 SQLite가 편함.
-
DataStore이나 Room같은 다양한 것들도 많음
-
정답이 존재하지 않음 배고픔 배고프다 밥먹고 싶어
-
설계 단계에서 생각을 넓히는 것이 중요