package Ġcom . pr 0 gram m . app . ui Ċ Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ Ċ interface ĠRecyclerView Pool Provider Ġ{ ĊĠĠĠ Ġfun Ġre cyclerView Pool ( key : ĠString ): ĠRecyclerView . Re cyc led View Pool ĊĊĠĠĠ Ġfun Ġinvalidate RecyclerView Pool () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġimplement Ġif Ġsupported ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠRecyclerView Pool Map Ġ: ĠRecyclerView Pool Provider Ġ{ ĊĠĠĠ Ġprivate Ġval Ġpools Ġ= Ġhash Map Of < String , ĠRecyclerView . Re cyc led View Pool >() ĊĊĠĠĠ Ġoverride Ġfun Ġre cyclerView Pool ( key : ĠString ) Ġ= Ġpools . get Or Put ( key ) Ġ{ ĊĠĠĠĠĠĠĠ ĠRecyclerView . Re cyc led View Pool (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġwe Ġexpect Ġthe Ġfirst Ġview Type Ġto Ġbe Ġthe Ġmost Ġcommon , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġso Ġwe Ġincrease Ġthe Ġpool Ġsize ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Max Re cyc led Views ( 0 , Ġ 1 6 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinvalidate RecyclerView Pool () Ġ{ ĊĠĠĠĠĠĠĠ Ġpools . values . clear () ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ fun ĠRecyclerView Pool Provider . configure RecyclerView ( key : ĠString , Ġview : ĠRecyclerView ) Ġ{ ĊĠĠĠ Ġview . set Re cyc led View Pool ( re cyclerView Pool ( key )) ĊĊĠĠĠ Ġ// ĠFIXME Ġthis Ġwould Ġbe Ġnice , Ġbut , Ġthere Ġseems Ġto Ġbe Ġa Ġbug Ġin Ġandroidx . fragment Ġ> Ġ 1 . 1 . 0 . ĊĠĠĠ Ġ// Ġ Ġif Ġwe Ġuse Ġa Ġnested Ġfragment , Ġthe Ġview Ġis Ġdet ached Ġfrom Ġthe Ġwindow Ġbefore ĊĠĠĠ Ġ// Ġ Ġthe Ġview Ġstate Ġis Ġsaved . ĠWith Ġthe Ġre cycle Children On Detach Ġthe Ġre cycler view ĊĠĠĠ Ġ// Ġ Ġre cycles Ġand Ġremoves Ġall Ġviews Ġprior Ġto Ġsaving Ġtheir Ġstate . ĊĊĠĠĠ Ġ// Ġif Ġpossible , Ġre cycle Ġviews Ġon Ġdetach ĊĠĠĠ Ġ// ĠĠĠ Ġval Ġlm Ġ= Ġview . layout Manager ĊĠĠĠ Ġ// ĠĠĠ Ġif Ġ( lm Ġis ĠLinearLayoutManager ) Ġ{ ĊĠĠĠ Ġ// ĠĠĠĠĠĠĠ Ġlm . recycle Children On Detach Ġ= Ġtrue ĊĠĠĠ Ġ// ĠĠĠ Ġ} Ċ } Ċ