package Ġplay ground . develop . social note . adapter Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . paging . Paged ListAdapter Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . google . android . material . dialog . Material AlertDialog Builder Ċ import Ġorg . s ufficient ly secure . html text view . Html Http Image Getter Ċ import Ġplay ground . develop . social note . R Ċ import Ġplay ground . develop . social note . database . local . notes . Note Ċ import Ġplay ground . develop . social note . databinding . ListItem Notes Binding Ċ import Ġplay ground . develop . social note . ui . Add Edit Note Activity Ċ import Ġplay ground . develop . social note . utils . Constants Ċ import Ġplay ground . develop . social note . utils . Notes Diff Callback Ċ import Ġjava . util .* Ċ import Ġkotlin . collections . ArrayList ĊĊ Ċ /** Ċ Ġ* ĠCreated Ġby ĠA bd ull ah At ta Ġon Ġ 7 / 2 3 / 2 0 1 9 . Ċ Ġ*/ Ċ class ĠP aged Note ListAdapter ( private Ġval Ġlistener : ĠLong ClickListener , Ġprivate Ġval Ġcontext : ĠContext ) Ġ: ĠP aged ListAdapter < Note , ĠP aged Note ListAdapter . Notes ViewHolder >( Notes Diff Callback ()) Ġ{ ĊĊĠĠĠ Ġval Ġbackground Colors Ġ= Ġcontext . resources . getInt Array ( R . array . re cyclerView Background Colors ) ĊĠĠĠĠĠĠĠ Ġ. to Collection ( ArrayList ()) ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠNotes ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinflater Ġ= ĠLayoutInflater . from ( context ) ĊĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= ĠListItem Notes Binding . inflate ( in flater , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn ĠNotes ViewHolder ( binding ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠNotes ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġholder . bind ( getItem ( position )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġprevious Random Color Ġ= Ġ 0 ĊĠĠĠ Ġvar Ġcolor Before Previous Ġ= Ġ 1 ĊĊĠĠĠ Ġinner Ġclass ĠNotes ViewHolder ( var Ġm Binding : ĠListItem Notes Binding ) Ġ: ĠRecyclerView . ViewHolder ( m Binding . root ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Binding . handlers Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġbind ( note : ĠNote ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Binding . note Ġ= Ġnote ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Binding . list Item Note Body ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Html ( note ?. note !! , ĠHtml Http Image Getter ( m Binding . list Item Note Body )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( note . note Title Ġ== Ġnull Ġ|| Ġnote . note Title Ġ== Ġ"") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Binding . list Item Note Title . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Note Background () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġset Note Background () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġnew Random Color : ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Random Color Ġ= ĠgetRandom Color () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġwhile Ġ( new Random Color Ġ== Ġprevious Random Color Ġ|| Ġnew Random Color Ġ== Ġcolor Before Previous ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Binding . list Item Note Parent . set BackgroundColor ( new Random Color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Before Previous Ġ= Ġprevious Random Color ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprevious Random Color Ġ= Ġnew Random Color ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun ĠgetRandom Color () Ġ= Ġbackground Colors [ Random (). nextInt ( background Colors . size )] ĊĊĊĠĠĠĠĠĠĠ Ġfun Ġon Note Long Click ( view : ĠView ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMaterial AlertDialog Builder ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle ( context . getString ( R . string . delete _ note _ dialog _ title )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMessage ( context . getString ( R . string . delete _ note _ dialog _ message )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( context . getString ( R . string . delete _ note _ dialog _ positive _ button _ label )) Ġ{ Ġdialog , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelete Note () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Negative Button ( context . getString ( R . string . delete _ note _ dialog _ negative _ button _ label )) Ġ{ Ġdialog , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. show () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġdelete Note () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlistener . on Long ClickListener ( getItem ( adapter Position ) !! ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġon Note Click ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnote Intent Ġ= ĠIntent ( context , ĠAdd Edit Note Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnote Intent . putExtra ( Constants . NOTE _ INT ENT _ KEY , ĠgetItem ( adapter Position )?. id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . startActivity ( note Intent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠLong ClickListener Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon Long ClickListener ( note : ĠNote ) ĊĠĠĠ Ġ} Ċ }