package Ġcom . ek o app . ek os dk . u ikit . chat . messages . view Holder Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġcom . ek o app . ek os dk . message . E ko Message Ċ import Ġcom . ek o app . ek os dk . u ikit . chat . R Ċ import Ġcom . ek o app . ek os dk . u ikit . chat . databinding . Am ity Item Text Message Sender Binding Ċ import Ġcom . ek o app . ek os dk . u ikit . chat . databinding . Am ity Popup Text Msg Sender Binding Ċ import Ġcom . ek o app . ek os dk . u ikit . chat . edit Message . E ko Edit Message Activity Ċ import Ġcom . ek o app . ek os dk . u ikit . chat . messages . pop Up . E ko Pop Up Ċ import Ġcom . ek o app . ek os dk . u ikit . chat . messages . viewModel . E ko Text Message ViewModel Ċ import Ġcom . ek o app . ek os dk . u ikit . components . IL ong Press Listener Ċ import Ġcom . ek o app . ek os dk . u ikit . model . Event Identifier Ċ Ċ class ĠE ko Text Msg Sender ViewHolder ( ĊĠĠĠ ĠitemView : ĠView , ĊĠĠĠ Ġprivate Ġval Ġitem ViewModel : ĠE ko Text Message ViewModel , ĊĠĠĠ Ġcontext : ĠContext Ċ ) Ġ: ĠE ko Selectable Message ViewHolder ( item View , Ġitem ViewModel , Ġcontext ), ĠI Long Press Listener Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġbinding : ĠAm ity Item Text Message Sender Binding ? Ġ= ĠData Binding Util . bind ( item View ) ĊĠĠĠ Ġprivate Ġvar Ġpop Up : ĠE ko Pop Up ? Ġ= Ġnull ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding ?. vm Text Message Ġ= Ġitem ViewModel ĊĠĠĠĠĠĠĠ Ġbinding ?. lon Press Listener Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġadd ViewModel Listener () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd ViewModel Listener () Ġ{ ĊĠĠĠĠĠĠĠ Ġitem ViewModel . on Event Received Ġ+= Ġ{ Ġevent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( event . type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEvent Identifier . EDIT _ MESSAGE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigate To Edit Message () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpop Up ?. dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEvent Identifier . DIS MIS S _ POP UP Ġ-> Ġpop Up ?. dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Message Data ( item : ĠE ko Message ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġitem . getData () Ġas ĠE ko Message . Data . TEXT ĊĠĠĠĠĠĠĠ Ġitem ViewModel . text . set ( data . getText ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Pop Up () Ġ{ ĊĠĠĠĠĠĠĠ Ġpop Up Ġ= ĠE ko Pop Up () ĊĠĠĠĠĠĠĠ Ġval Ġanchor : ĠView Ġ= ĠitemView . findViewById ( R . id . tv Message Outgoing ) ĊĠĠĠĠĠĠĠ Ġval Ġinflater : ĠLayoutInflater Ġ= ĠLayoutInflater . from ( anchor . context ) ĊĠĠĠĠĠĠĠ Ġval Ġbinding : ĠAm ity Popup Text Msg Sender Binding Ġ= ĠData Binding Util . inflate ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinflater , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . am ity _ popup _ text _ msg _ sender , Ġnull , Ġtrue ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġbinding . viewModel Ġ= Ġitem ViewModel ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! item ViewModel . is Failed . get ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpop Up ?. show Pop Up ( binding . root , Ġanchor , Ġitem ViewModel , ĠE ko Pop Up . Pop Up Gravity . END ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġnavigate To Edit Message () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠE ko Edit Message Activity . new Intent ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . context , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem ViewModel . ek o Message ?. getMessage Id () Ġ?: Ġ"" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠitemView . context . startActivity ( intent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Long Press () Ġ{ ĊĠĠĠĠĠĠĠ Ġitem ViewModel . on Long Press () ĊĠĠĠ Ġ} Ċ }