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 |
Tags
- Python
- ListAdapter
- ktor client
- ListAdapter DiffUtil
- exoplayer cache
- DiffUtil.ItemCallback
- build with ai
- android
- list map
- video caching
- AWS EC2
- ExoPlayer
- 유튜브
- map
- doc2vec
- ChatGPT
- 시행착오
- 안드로이드
- Zsh
- ktor api call
- FastAPI
- android exoplayer
- 스피너
- 독서
- getChangePayload
- kotlin collection
- llm
- kotlin list
- android custom view
- android ktor
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 |