package Ġmo e . f eng . dan ma qua . ui . common . list Ċ Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ Ċ class ĠAuto Scroll Helper ( ĊĠĠĠ Ġval Ġre cyclerView : ĠRecyclerView , ĊĠĠĠ Ġvar Ġauto Scroll Enabled : ĠBoolean Ġ= Ġtrue Ċ ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġcreate ( rv : ĠRecyclerView , Ġauto Scroll Enabled : ĠBoolean Ġ= Ġtrue ): ĠAuto Scroll Helper Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhelper Ġ= ĠAuto Scroll Helper ( rv , Ġauto Scroll Enabled ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhelper . register Listener () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġhelper ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġlistener : ĠListener Ġ= ĠListener () ĊĊĠĠĠ Ġfun Ġregister Listener () Ġ{ ĊĠĠĠĠĠĠĠ Ġre cyclerView . add On Scroll Listener ( listener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġunregister Listener () Ġ{ ĊĠĠĠĠĠĠĠ Ġre cyclerView . remove On Scroll Listener ( listener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġinner Ġclass ĠListener Ġ: ĠRecyclerView . On Scroll Listener () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Scroll StateChanged ( re cyclerView : ĠRecyclerView , ĠnewState : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( newState ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRecyclerView . SCROLL _ STATE _ IDLE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlayout Manager Ġ= Ġre cyclerView . layout Manager Ġas ĠLinearLayoutManager ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlast Pos Ġ= Ġlayout Manager . find Last Comp let ely Visible Item Position () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Count Ġ= Ġlayout Manager . item Count ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( last Pos Ġ== Ġitem Count Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġauto Scroll Enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRecyclerView . SCROLL _ STATE _ DR AG GING Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġauto Scroll Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ Ċ }