package Ġfr . n sp u . dev . record voice learning . view . adapter Ċ Ċ import Ġandroid . databinding . Data Binding Util Ċ import Ġandroid . support . v 7 . util . Diff Util Ċ import Ġandroid . support . v 7 . widget . RecyclerView Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . ViewGroup Ċ import Ġjava . util . Objects ĊĊ Ċ import Ġfr . n sp u . dev . record voice learning . R Ċ import Ġfr . n sp u . dev . record voice learning . databinding . Item Folder Binding Ċ import Ġfr . n sp u . dev . record voice learning . model . Folder Ċ import Ġfr . n sp u . dev . record voice learning . utils . callback . Click Callback Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġn sp u Ġon Ġ 1 8 - 0 2 - 0 2 . Ċ Ġ*/ Ċ Ċ class ĠĠ ĠFolder Adapter ( private Ġval Ġm Folder Click Callback : ĠClick Callback ?) Ġ: ĠRecyclerView . Adapter < Folder Adapter . Folder ViewHolder >() Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġm Folder List : ĠList < Folder >? Ġ= Ġnull ĊĊĠĠĠ Ġfun Ġset Folder List ( folder List : ĠList < Folder >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( m Folder List Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Folder List Ġ= Ġfolder List ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Item Range Inserted ( 0 , Ġfolder List . size ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠDiff Util . calculate Diff ( object Ġ: ĠDiff Util . Callback () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Old List Size (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġm Folder List !!. size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget New List Size (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfolder List . size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Items The Same ( old Item Position : ĠInt , Ġnew Item Position : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġm Folder List ! ![ old Item Position ]. id Ġ=== Ġfolder List [ new Item Position ]. id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Contents The Same ( old Item Position : ĠInt , Ġnew Item Position : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Folder Ġ= Ġfolder List [ new Item Position ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġold Folder Ġ= Ġm Folder List ! ![ old Item Position ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ( new Folder . id Ġ=== Ġold Folder . id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġnew Folder . name Ġ== Ġold Folder . name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġnew Folder . type Answer Ġ== Ġold Folder . type Answer ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġnew Folder . type Question Ġ== Ġold Folder . type Question ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Folder List Ġ= Ġfolder List ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . dispatch Updates To ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠFolder ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= ĠData Binding Util ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. inflate < Item Folder Binding >( LayoutInflater . from ( parent . context ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . item _ folder , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ) ĊĠĠĠĠĠĠĠ Ġbinding . callback Ġ= Ġm Folder Click Callback ĊĠĠĠĠĠĠĠ Ġreturn ĠFolder ViewHolder ( binding ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠFolder ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġholder . binding . folder Ġ= Ġm Folder List ! ![ position ] ĊĠĠĠĠĠĠĠ Ġholder . binding . execute Pending Bindings () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( m Folder List Ġ== Ġnull ) Ġ 0 Ġelse Ġm Folder List !!. size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠFolder ViewHolder ( val Ġbinding : ĠItem Folder Binding ) Ġ: ĠRecyclerView . ViewHolder ( binding . root ) Ċ } Ċ