๋ชฉ์ฐจ
์คํฌ๋กค์ ํ๋๋ฐ ์๋์ ๊ฐ์ ๊ฒฝ๊ณ ๋ฅผ ๋ฐ๊ฒฌํ๋ค.
์คํฌ๋กค ์ฝ๋ฐฑ์ ๋ฆฌ์ฌ์ดํด๋ฌ๋ทฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ ์ธก์ ์ด๋ ๋ ์ด์์ ๋จ๊ณ ์ค์ ์คํ๋ ์ ์๊ณ ,
๋ฆฌ์ฌ์ดํด๋ฌ๋ทฐ์ ๊ตฌ์กฐ ๋๋ ์ด๋ํฐ์ ๋ด์ฉ์ ๋ณ๊ฒฝํ ์ ์๋ ๋ฉ์๋ ํธ์ถ์ ๋ค์ ํ๋ ์์ผ๋ก ์ฐ๊ธฐํด์ผํ๋ค๋ ๋ด์ฉ์ด์๋ค.
Cannot call this method in a scroll callback.
Scroll callbacks mightbe run during a measure & layout pass where you cannot change theRecyclerView data.
Any method call that might change the structureof the RecyclerView or the adapter contents should be postponed tothe next frame.
๋๋ ์คํฌ๋กค ์ค ์ตํ๋จ์ ๋ฟ์ผ๋ฉด ๋ค์ ํ์ด์ง์ ๋ฐ์ดํฐ๋ฅผ ํธ์ถํ์ฌ ๋ค์ ์ด๋ํฐ์ ์๋ก์ด ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ด์ฃผ๋ ์์ ์ ํ๋ค.
์ด๋
1. ๋ฐ์ดํฐ ๋ณ๊ฒฝ์ ์๋ฆฌ๊ธฐ ์ํด notifyDataSetChanged()๋ฅผ ํธ์ถํ์๊ณ
2. ๋ก๋ฉ ์ํ ๋ณ๊ฒฝ์ ์ํด ์ด๋ํฐ ๋ณ์๋ฅผ ๋ณ๊ฒฝํด์ฃผ์๋ค.
์ด๋ก ์ธํด ์์ ๊ฐ์ ๊ฒฝ๊ณ ๋ฉ์์ง๊ฐ ๋ฌ ๊ฒ์ด์๋ค..!!
// ๊ธฐ์กด
is MovieSelectEffect.LoadNextPage -> {
Timber.d("4. ํ๋๊ทธ๋จผํธ์ LoadNextPage effect ํธ์ถ ")
lifecycleScope.launch {
repeatOnLifecycle(Lifecycle.State.STARTED) {
viewModel.moviePosterUriList.collect {
moviePosterAdapter?.initializePosterUriList()
moviePosterAdapter?.setPosterUriList(it)
// ๋ณ๊ฒฝ View.post(Runnable)์ ํตํด ๊ตฌํํด์ฃผ์๋ค.
is MovieSelectEffect.LoadNextPage -> {
lifecycleScope.launch {
repeatOnLifecycle(Lifecycle.State.STARTED) {
viewModel.moviePosterUriList.collect {
binding.movieRecyclerView.post {
moviePosterAdapter?.initializePosterUriList()
moviePosterAdapter?.setLoading(false)
moviePosterAdapter?.setPosterUriList(it)
}
// View.post(Runnble)
// UI ์ค๋ ๋์์ ์คํํ ์์
์ ์์ฝํ๋ ๋ฉ์๋์ด๋ค.
// ์คํํ ์์
์ UI ์ค๋ ๋์ ์์
๋๊ธฐ์ด์ ์ถ๊ฐํ๋ค. ํ์ฌ UI ์์
์ด ์๋ฃ๋ ํ์ ์์ฝ๋ ์์
์ด ์คํ๋๋ค.
// UI ์ํ๊ฐ ์์ ํ ์ค๋น๋ ํ ๋ทฐ ๋ ์ด์์์ด๋ ํฌ๊ธฐ ๊ณ์ฐ ํ) ์์
์ด ์ํ๋๋ค.
// ์คํฌ๋กค ์ฝ๋ฐฑ์ด๋ ๋ฐ์ดํฐ ๋ก๋ ์ค UI์
๋ฐ์ดํธ๋ฅผ ๋ฐ๋ก ์ํํ๋ฉด ๋ ์ด์์์ด ๋ณ๊ฒฝ๋๊ฑฐ๋ ์คํฌ๋กค ์์น๊ฐ ๋ง์ง ์๋ ๋ฑ ๋ถ์์ฉ ๋ฐ์ ๊ฐ๋ฅ
// post๋ฅผ ํตํด UI ์์
์ ์์ ํ ์์ ์ผ๋ก ์ฐ๊ธฐํ ์ ์๋ค.
// ์ด๋ํฐ์ ์๋ก์ด ๋ฐ์ดํฐ๋ฅผ ์ค์ ํ๊ณ , ๋ฆฌ์ฌ์ดํด๋ฌ๋ทฐ๋ฅผ ๊ฐฑ์ ํ๋ ์์
์ UI ์ค๋ ๋์์ ์คํํ๋๋ก ์์ฝํ๋ค.
// ๋ฐ์ดํฐ ๋ณ๊ฒฝ ์์
์ด post๋ฅผ ํตํด ์์ฝ๋๋ฉด , ํ์ฌ ์คํฌ๋กค ์์
๋ฑ์ด ์๋ฃ๋ ํ ์คํ๋๋ค.
'๐ค2024 ์๋๋ก์ด๋ > ๐ฟ ์ํ ํ๋ก์ ํธ ๊ฐ๋ฐ ์ผ์ง' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก์ ํธ์ Jetpack Navigation ์ ์ฉํ๊ธฐ (8) | 2024.10.15 |
---|---|
๋ฌดํ์คํฌ๋กค์ Paging3 ์ ์ฉํ๊ธฐ (9) | 2024.10.13 |
๐๋ฌดํ ์คํฌ๋กค ์์ ๊ตฌํํด๋ณด๋ค. (5) | 2024.10.12 |
launch๋ ๊ธฐ๋ค๋ ค์ฃผ์ง ์๋๋ค. (async, await , first etc) (8) | 2024.10.11 |
Android : ๊ฐ์๋ฌธ ๋ฑ๋ก ๊ณผ์ ์ ๋ฆฌ (5) | 2024.08.29 |