Junior — Middle
Чӣ гуна метавон ҷойгиркунии ҳаракатро дар RecyclerView ҳангоми дубора эҷод кардани Activity таъмин кард?
sobes.tech AI
Ҷавоб аз AI
Лутфан, агар шумо мехоҳед, ки ҷойгиршавии скролро дар RecyclerView ҳангоми барқарор кардани Activity нигоҳ доред, шумо метавонед ҳолати LayoutManager-ро нигоҳ доред ва барқарор кунед.
Масалан барои LinearLayoutManager:
// нигоҳ доштани ҷойгиршавӣ
val layoutManager = recyclerView.layoutManager as LinearLayoutManager
val scrollPosition = layoutManager.findFirstVisibleItemPosition()
// нигоҳ доштан дар Bundle, масалан дар onSaveInstanceState
outState.putInt("scroll_position", scrollPosition)
// барқарор кардани ҷойгиршавӣ дар onCreate ё onRestoreInstanceState
val position = savedInstanceState?.getInt("scroll_position") ?: 0
recyclerView.scrollToPosition(position)
Агар ниёз ба барқарорсозии дақиқтар (масалан, бо баррасии кӯчиш дар дохили унсур) дошта бошед, метавонед ҳолати Parcelable-ро нигоҳ доред:
// нигоҳ доштан
val layoutState = recyclerView.layoutManager?.onSaveInstanceState()
outState.putParcelable("layout_state", layoutState)
// барқарорсозӣ
val layoutState = savedInstanceState?.getParcelable<Parcelable>("layout_state")
recyclerView.layoutManager?.onRestoreInstanceState(layoutState)
Тавре ки мебинем, дар вақти барқарор кардани Activity, ҷойгиршавии скрол ба таври дуруст нигоҳ дошта мешавад ва барқарор карда мешавад.