Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |
Tags
- exoplayer cache
- DiffUtil.ItemCallback
- Python
- doc2vec
- ansi2html
- 유튜브
- getChangePayload
- 스피너
- android
- AWS EC2
- kotlin collection
- android ktor
- video caching
- ChatGPT
- 시행착오
- kotlin list
- ListAdapter
- ktor api call
- ListAdapter DiffUtil
- list map
- llm
- ktor client
- 독서
- ExoPlayer
- map
- 안드로이드
- android custom view
- build with ai
- android exoplayer
- FastAPI
Archives
- Today
- Total
버튼 수집상
[안드로이드] onBindViewHolder()가 호출될 때마다 뷰홀더 내부 가로 스크롤이 리셋되는 이슈 본문
TIL - 안드로이드
[안드로이드] onBindViewHolder()가 호출될 때마다 뷰홀더 내부 가로 스크롤이 리셋되는 이슈
cocokaribou 2023. 5. 17. 11:16기본적인 건데 까먹는 바람에
스크롤 리스너 달아서 오프셋 값 저장하기 등등 쌩 난리를 쳤었다..
다시 잊지 않도록 기록해둔다.
문제는 onBindViewHolder 가 호출되는 시점에 매번 RecylerView.Adapter를 세팅해주고 있었던 것.
adapter를 최초 한 번만 세팅하면
전체 세로 스크롤을 오르내리면서 onBindViewHolder()를 부르더라도 뷰홀더 안 쪽의 가로 스크롤 위치가 유지된다.
수정 전 (제대로 안 돌아감)
private val mAdapter = GoodsAdapter()
override fun onBind(data: Any?, position: Int) {
initUI(data)
}
private fun initUI(data: ModuleData) = with(binding.rv) {
scrollTo(data.savedX, 0)
adapter = mAdapter
layoutManager = LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false)
addOnScrollListener(object: RecyclerView.OnScrollListener() {
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
super.onScrolled(recyclerView, dx, dy)
data.savedX = dx // 여기서 가로 스크롤 값 저장.. 인데 절대값이 안 들어온다
}
})
mAdapter.submitList(data.goodsList)
//...
}
수정 후
private val mAdapter = GoodsAdapter()
init {
initRecyclerView()
}
private fun initRecyclerView() = with(binding.rv) {
adapter = mAdapter
layoutManager = LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false)
}
override fun onBind(data: Any?, position: Int) {
initUI(data)
}
private fun initUI(data: ModuleData) {
mAdapter.submitList(data.goodsList)
//...
}
728x90
'TIL - 안드로이드' 카테고리의 다른 글
[안드로이드] TabLayout.Tab 레이아웃에 커스텀뷰 세팅 + 뷰 추가하기 (0) | 2023.06.12 |
---|---|
[안드로이드] 싱글액티비티 구조를 언제 쓰면 좋을까? (0) | 2023.05.23 |
[안드로이드] 스크롤 상단에 margin 적용한 sticky view 만들기 (0) | 2023.05.02 |
[안드로이드] 스피너 커스텀UI 만들기 (두 줄 리스트 스피너) (0) | 2023.05.02 |
[안드로이드] 가변적인 json 키를 동일한 클래스로 파싱하기 (0) | 2023.04.18 |