package Ġcom . sc wang . refresh layout . adapter Ċ Ċ import Ġandroidx . view binding . View Binding Ċ Ċ abstract Ġclass ĠBase View Binding Mutable Recycler Adapter < VB Ġ: ĠView Binding , ĠT , ĠV H Ġ: ĠBase ViewHolder < VB , ĠT >>( ĊĠĠĠ Ġprivate Ġval Ġdata : ĠMutable List < T >, Ġon ItemClickListener : Ġ(( T , ĠInt ) Ġ-> ĠUnit )? = null Ċ ) Ġ: ĊĠĠĠ ĠBase View Binding Recycler Adapter < VB , ĠT , ĠV H >( data , Ġon ItemClickListener ) Ġ{ ĊĊĠĠĠ Ġfun Ġrefresh ( collection : ĠCollection < T >) Ġ{ ĊĠĠĠĠĠĠĠ Ġdata . clear () ĊĠĠĠĠĠĠĠ Ġdata . addAll ( collection ) ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġpush Last ( collection : ĠCollection < T > ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlast Size Ġ= Ġdata . size ĊĠĠĠĠĠĠĠ Ġcollection ?. let Ġ{ Ġdata . addAll ( collection ) Ġ} ĊĠĠĠĠĠĠĠ Ġnotify Item Range Inserted ( last Size , Ġdata . size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġpush Front ( collection : ĠCollection < T >) Ġ{ ĊĠĠĠĠĠĠĠ Ġinsert ( collection , Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġfun Ġinsert ( collection : ĠCollection < T >, Ġindex : ĠInt Ġ= Ġitem Count ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdata . addAll ( collection ) ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġclear () Ġ{ ĊĠĠĠĠĠĠĠ Ġdata . clear () ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} Ċ }