5/12 수업

hyunji·2023년 5월 12일
0

1,2단계 피드백

NestedScrollView

  • 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같은 다양한 것들도 많음

  • 정답이 존재하지 않음 배고픔 배고프다 밥먹고 싶어

  • 설계 단계에서 생각을 넓히는 것이 중요

0개의 댓글