RecyclerView 멀티 뷰 타입

상상코딩·2021년 8월 21일
0

안드로이드

목록 보기
2/21
post-thumbnail

멀티 뷰 타입 리사이클러뷰 만들기

방법은 쉽다! onCreateViewHolder의 viewType으로 분기해서 뷰홀더를 만들어주면 됨!!

물론 이때 각 뷰타입에 맞는 뷰홀더 클래스(FirstCardViewHolder, StoryViewHolder)들도 만들어줘야하고, 리턴 타입도 제너럴하게 RecyclerView.ViewHolder로 바꿔줘야 함.
아니 근데 내가 뭘 넘긴 적이 없는데,, 얘가 어떻게 알고 뷰타입을 넘겨줄 수 있지? 🧐

어댑터 내부에 getItemViewType(position: Int)를 오버라이드하면 onCreateViewHolderviewType으로 쏙 들어가게 된다는 사실!!

그다음 onBindViewHolder의 holder 타입도 제너럴하게 RecyclerView.ViewHolder로 바꿔준다!
내부 뷰타입에 따른 분기방법은 2가지(1. position/model의 변수로 직접확인. 2. 홀더객체의 타입을 확인하여 분기)가 있지만 추후 변동성을 생각하면 로직 중복을 줄이기 위해 2번으로 진행!

클래스에 빨간줄이 뜬다면!!!
어댑터의 뷰홀더 타입도 제너럴하게 바꿔줘야함..RecyclerView.ViewHolder로..

뷰타입을 나누는 기준

  1. 모델의 어떤 필드를 애초에 뷰타입으로 둔다.
  2. 특정 포지션 값에 따라 나눈다.

-> 각 value들은 companion object에 상수로 두거나, enum class로 두어 관리.

profile
히히낙낙

0개의 댓글