package Ġio . github . w ulkan owy . ui . modules . exam Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġio . github . w ulkan owy . data . db . entities . Exam Ċ import Ġio . github . w ulkan owy . databinding . Header Exam Binding Ċ import Ġio . github . w ulkan owy . databinding . Item Exam Binding Ċ import Ġio . github . w ulkan owy . utils . to Formatted String Ċ import Ġio . github . w ulkan owy . utils . week Day Name Ċ import Ġjava . time . LocalDate Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠExam Adapter Ġ@ Inject Ġconstructor () Ġ: ĠRecyclerView . Adapter < RecyclerView . ViewHolder >() Ġ{ ĊĊĠĠĠ Ġvar Ġitems Ġ= Ġempty List < Exam Item <* >>() ĊĊĠĠĠ Ġvar ĠonClick Listener : Ġ( Exam ) Ġ-> ĠUnit Ġ= Ġ{} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count () Ġ= Ġitems . size ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem ViewType ( position : ĠInt ) Ġ= Ġitems [ position ]. view Type . id ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠRecyclerView . ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinflater Ġ= ĠLayoutInflater . from ( parent . context ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( view Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠExam Item . ViewType . HEADER . id Ġ-> ĠHeader ViewHolder ( Header Exam Binding . inflate ( in flater , Ġparent , Ġfalse )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠExam Item . ViewType . ITEM . id Ġ-> ĠItem ViewHolder ( Item Exam Binding . inflate ( in flater , Ġparent , Ġfalse )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalStateException () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠRecyclerView . ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( holder ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠHeader ViewHolder Ġ-> Ġbind Header ViewHolder ( holder . binding , Ġitems [ position ]. value Ġas ĠLocalDate ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠItem ViewHolder Ġ-> Ġbind Item ViewHolder ( holder . binding , Ġitems [ position ]. value Ġas ĠExam ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" Default Locale ") ĊĠĠĠ Ġprivate Ġfun Ġbind Header ViewHolder ( binding : ĠHeader Exam Binding , Ġdate : ĠLocalDate ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( binding ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexam Header Day . text Ġ= Ġdate . week Day Name . capitalize () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexam Header Date . text Ġ= Ġdate . to Formatted String () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbind Item ViewHolder ( binding : ĠItem Exam Binding , Ġexam : ĠExam ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( binding ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexam Item Subject . text Ġ= Ġexam . subject ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexam Item Teacher . text Ġ= Ġexam . teacher ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexam ItemType . text Ġ= Ġexam . type ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġroot . setOnClickListener Ġ{ ĠonClick Listener ( exam ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠHeader ViewHolder ( val Ġbinding : ĠHeader Exam Binding ) Ġ: ĊĠĠĠĠĠĠĠ ĠRecyclerView . ViewHolder ( binding . root ) ĊĊĠĠĠ Ġprivate Ġclass ĠItem ViewHolder ( val Ġbinding : ĠItem Exam Binding ) Ġ: ĊĠĠĠĠĠĠĠ ĠRecyclerView . ViewHolder ( binding . root ) Ċ } Ċ