통신을 하고 난후에 탭의 타이틀을 지정하거나
통신을 하고 난 후에 선택적으로 어댑터를 붙이는 경우가 있다.
이때 라이브데이터를 observe하고 난 후 ( 통신을 하고 난후)에
리사이클러뷰에 어댑터를 설정하지 않고
초기에 어댑터를 설정한 후에 나중에 데이터를 밀어주는 방식으로 변경하려고 한다.
리사이클러뷰 어댑터에서 해당 변수를 멤버변수로 지정
var type: QuestionType? = null
set(value) {
field = value
notifyDataSetChanged()
}
override fun getItemCount(): Int = if (type == null) 0 else NUM_PAGES
showEntry.observe { (entry, size) ->
(viewDataBinding.vpResult.adapter as ResultStateAdapter).type = entry.type
viewDataBinding.tabResult.setupWithViewPager2(viewDataBinding.vpResult) { tab, position ->
val (correctSize, wrongSize) = size
when (position) {
0 -> tab.text = "정답(${correctSize})"
else -> tab.text = "오답(${wrongSize})"
}
}
}
'Android' 카테고리의 다른 글
리사이클러뷰 중첩 구조를 하나의 리사이클러뷰로 리팩토링 과정 (0) | 2021.09.29 |
---|---|
카카오 로그인 Trouble Shooting (0) | 2021.09.29 |
커스텀 이미지피커 [+페이징,앨범] (10, 11 대응) (5) | 2021.09.07 |
댓글 찾기 (0) | 2021.08.19 |
데이터 조작 : flatMap 활용하기 (0) | 2021.08.09 |