package Ġtk . paul mb uru . ny t books . ui Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . annotation . Layout Res Ċ import Ġandroidx . constraint layout . widget . Group Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġtk . paul mb uru . ny t books . R Ċ import Ġtk . paul mb uru . ny t books . databinding . Item Book Binding Ċ import Ġtk . paul mb uru . ny t books . models . Book Ċ import Ġtk . paul mb uru . ny t books . utils . animation . Animations Ċ Ċ /* ĠĠ ĠCreated Ġby ĠPaul ĠM bur u Ġon Ġ 5 / 2 4 / 2 0 . Ċ Ġ* Ċ Ġ* ĠĠ ĠCopyright Ġ 2 0 2 0 ĠPaul ĠM bur u Ċ Ġ* ĠĊ Ġ* ĠĠ ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* ĠĠ Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠĠ ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* ĠĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* ĠĠ ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* ĠĠ Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠĠ ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠĠ ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* ĠĠ Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ class ĠBooks Adapter ( val ĠonClick Listener : ĠOn ClickListener ) Ġ: Ġ ĠRecyclerView . Adapter < Books ViewHolder >() Ġ{ ĊĊĊĠĠĠ Ġvar Ġbooks : ĠList < Book > Ġ= Ġempty List () ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠFor Ġan Ġextra Ġchallenge , Ġupdate Ġthis Ġto Ġuse Ġthe Ġpaging Ġlibrary . ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠNotify Ġany Ġregistered Ġob servers Ġthat Ġthe Ġdata Ġset Ġhas Ġchanged . ĠThis Ġwill Ġcause Ġevery ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġelement Ġin Ġour ĠRecyclerView Ġto Ġbe Ġinvalid ated . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠBooks ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwith Data Binding : ĠItem Book Binding Ġ= ĠData Binding Util . inflate ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLayoutInflater . from ( parent . context ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBooks ViewHolder . LAYOUT , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn ĠBooks ViewHolder ( with Data Binding ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count () Ġ= Ġbooks . size ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠBooks ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġholder . view Data Binding . also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . book Ġ= Ġbooks . get ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . click listener Ġ= ĠonClick Listener ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . expand Icon . setOnClickListener Ġ{ v Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġshow Ġ= Ġtoggle Layout (! books . get ( position ). is Expanded , Ġv , Ġholder . view Data Binding . description Group ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbooks . get ( position ). is Expanded Ġ= Ġshow ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtoggle Layout ( is Expanded : ĠBoolean , Ġv : ĠView , Ġgroup : ĠGroup ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ ĠAnim ations . toggle Arrow ( v , Ġis Expanded ) ĊĠĠĠĠĠĠĠ Ġif Ġ( is Expanded ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAnim ations . expand ( group ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAnim ations . collapse ( group ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġis Expanded ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠBooks ViewHolder ( val Ġview Data Binding : ĠItem Book Binding ): ĠRecyclerView . ViewHolder ( view Data Binding . root ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Layout Res ĊĠĠĠĠĠĠĠ Ġval ĠLAY OUT Ġ= ĠR . layout . item _ book ĊĠĠĠ Ġ} Ċ } ĊĊ