마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

리사이클러뷰안에 리사이클러뷰 모델 가져오기

0 추천
세로 리사이클러뷰가 있는데 그 안에 하나의 아이템마다 그 안에 가로 리사이클러뷰가 있는 형태입니다만 가로리사이클러뷰에선 데이터가 1~9개 유동적이고 그중 1개 클릭시 그 클릭한 아이템의 1~9개 모델을 다른액티비티로 다보내려하는데 뷰홀더에서 로그찍으면 당연히 찍은 1개가 나오고 어댑터에서 하자니 세로 리사이클러뷰안에있는  1~9개의 모델들을 다가져옵니다 방법이 없을까요?
수원통학러 (3,570 포인트) 님이 2022년 1월 25일 질문

1개의 답변

0 추천

어댑터로 데이터를 보낼 때, 데이터 구조를 유저 이벤트에 반응하기 좋은 형태로 만드세요.

즉, 가로 아이템이 있고, 각 아이템들이 하위 아이템을 가질 수 있는 구조로 말이죠.

data class VeritcalItem(
   val id: String,
   val subItems: List<HorizontalItem>
)

data class HorizontalItem(
   val veticalItemid: String // = VeritcalItem.id
)

 

List<VerticalItem>을 어댑터에 넣어주면 되지 않을 까요? 그리고 VerticalItem과 HorizontalItem은 서로 키값으로 연결되게 하시면 사용자가 HorizonalItem 을 선택할 때 어떤 VerticalItem이 선택되었는지 알 수 있을 것 같습니다. 이것보다 좀 더 쉬운 방법이 있는지 연구해 보세요.

그리고 어댑터에 있는 아이템을 모두 다른 액티비티로 보내는 방법은 어댑터에 데이터를 제공한 데이터소스에서 보내야할 데이터만 가져오면 됩니다. , 데이터소스에서 어댑터에서 데이터를 가져올 때와 똑같이 가져오시고 여기에 선택한 HorizontalItem만 추가하시면 됩니다. 화면을 중심으로 처리하지 마시고 데이터 소스를 중심으로 처리하세요.

spark (227,470 포인트) 님이 2022년 1월 25일 답변
spark님이 2022년 1월 25일 수정
뷰홀더에서 어댑터로 가로 리사이클러뷰에 submitlist로 Lits<String>을 보내고 있습니다
사진 url이구요 만약 가로리사이클러뷰에 3개의 사진이 있고, 1~3번중 하나 누르면
총 3개의 사진 데이터를 액티비티로 보내줘야됩니다만 이걸 어떻게 해야될지 모르겠씁니다.
가로 리사이클러뷰 어댑터의 이벤트를 캡쳐하세요. 여기에 어떤 아이템을 선택했는지 전달해 주면, 액티비티에서는 데이터 소스에서 데이터를 가져오도록 만들면 되지 않을까요?

VerticalAdapter(
    private val onHorizontalItemClicked: (HorizontalItem) -> Unit
): RecyclerView.Adapter {

    override fun onCreateViewHolder(...): VerticalViewHolder {
          val itemView. = ...
          return VerticalViewHolder(itemView, onHorizontalItemClicked)
    }
}
...