package Ġcom . dev dd . recipe . feature _ profile . ui . profile . dev option . select option . adapter Ċ Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . navigation . Nav Directions Ċ import Ġandroidx . recyclerview . widget . Diff Util Ċ import Ġandroidx . recyclerview . widget . ListAdapter Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . dev dd . recipe . feature _ profile . R Ċ import Ġcom . dev dd . recipe . feature _ profile . databinding . Item View Select Option Binding Ċ import Ġcom . dev dd . recipe . ui . utils . extensions . bind With Layout Ċ Ċ class ĠSelect Option Adapter ( private Ġval Ġlistener : ĠOn Option Select Listener ) Ġ: ĊĠĠĠ ĠList Adapter < Developer Option , ĠSelect Option Adapter . Select Option ViewHolder >( ĊĠĠĠĠĠĠĠ ĠSelect Option Diff Callback ĊĠĠĠ Ġ) Ġ{ ĊĊĊĠĠĠ Ġfun Ġinterface ĠOn Option Select Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon Option Click ( direction : ĠNav Directions ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠSelect Option ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠSelect Option ViewHolder . get ViewHolder ( parent , Ġlistener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠSelect Option ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġitem Ġ= ĠgetItem ( position ) ĊĠĠĠĠĠĠĠ Ġholder . bind ( item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠSelect Option ViewHolder ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġbinding : ĠItem View Select Option Binding , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlistener : ĠOn Option Select Listener ĊĠĠĠ Ġ) Ġ: ĠRecyclerView . ViewHolder ( binding . root ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġget ViewHolder ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent : ĠViewGroup , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener : ĠOn Option Select Listener ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ): ĠSelect Option ViewHolder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbinding : ĠItem View Select Option Binding Ġ= Ġbind With Layout ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Id Ġ= ĠR . layout . item _ view _ select _ option , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Ġ= Ġparent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSelect Option ViewHolder ( binding , Ġlistener ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġbind ( option : ĠDeveloper Option ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . option Ġ= Ġoption ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . listener Ġ= Ġlistener ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . execute Pending Bindings () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġobject ĠSelect Option Diff Callback Ġ: ĠDiff Util . Item Callback < Developer Option >() Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Items The Same ( old Item : ĠDeveloper Option , Ġnew Item : ĠDeveloper Option ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġold Item . name Ġ== Ġnew Item . name ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Contents The Same ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġold Item : ĠDeveloper Option , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Item : ĠDeveloper Option ĊĠĠĠĠĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġold Item Ġ== Ġnew Item ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ