알려주신데로 2차원 recycler뷰를 이용해 구현했는데.. 또 다른 문제가 생기네요 ㅎㅎ;

18.06.23 06:25 작성 조회수 233

0

리사이클러뷰안에다가 또다른 리사이클러뷰를 만들었더니....

스크롤 문제는 완벽하게 해결됬습니다....;; 디자인상으로도 완벽하게 동작하게 되었습니다.^^ㅎ

그런데 여기서 또 다른 문제가(심각한?) 발생합니다....

이유인즉, 2차로 출력되는 recyclerview가 onBindViewHolder을 통해서

출력이 될때에 한꺼번에 데이터를 다 가져와 버리는 문제가 발생합니다.

(데이터가 200개이면 200개가 한번에 다 출력되버립니다;ㅋㅋㅋ)

아마도... 메인 리사이클러뷰 안에 리사이클러뷰가 들어가는것이라....

메인 리사이클러뷰의 첫번재 요소에 리사이클러뷰가 있으니....

전체를 그냥 다 읽어 들인것 같습니다....;;

이부분은 서브어댑터의 onBindViewHolder 에서

Log.e("상품명",data[position].it_name)

로그를 출력하여서..... 확인하였습니당;;

혹시...사실상 메인 recycler는 레이아웃 용도인데..;;

서브로 만들어 놓은 recycler가 데이터를 스크롤 할때마다 불러오는게 아니라

메인 recycler뷰의 영향으로 전체를 한꺼번에 다 불러와서...문제네요 ㅠ;

몬가 서브로 들어간 어댑터에 대한 설정이 있는걸까요?

이부분 관련하여서 조언 구할수 있을까요?ㅠㅠ;

=======================================================================

참고로

메인리사이클러뷰에서 1차로 레이아웃을 생성하는 어댑터에서 읽어 들일때

onBindViewHolder 부분에서 디자인 레이아웃을

holder.itemViewType 을 분기해서 어댑터를 설정해줬습니당

    if (holder.itemViewType === 3) {

var view = holder as ItemViewHolder

view.recyclerView!!.adapter = ItemAdapter(MainActivity().getItemData())

view.recyclerView!!.layoutManager = LinearLayoutManager(context)

}

그리고 onCreateViewHolder 에서도 마찬가지로 viewType을 분기하여서 다음과 설정하였습니다.

view = inflater.inflate(R.layout.item_list, parent, false)

holder = ItemViewHolder(view)

class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {

var recyclerView : RecyclerView? = null

init {

recyclerView = view.findViewById(R.id.inner_recyclerView3) as RecyclerView

}

}

답변 2

·

답변을 작성해보세요.

0

게시글이 너무 길어져서.. 아래 링크로 문의드렸습니다 ㅠ;
https://www.inflearn.com/dwquestion/리사이클러뷰를-2차로-구현시-문제점입니다-ㅠㅠ/

0

흠... 데이터만 다 읽오는 것이지 리소스 절약을 위해서 뷰는 만들어지주않았습니다 혹시 데이터를 다 불러오면 안되는 이유가 있나요?