package Ġcom . example . choice Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . google . firebase . auth . Firebase Auth Ċ Ċ class ĠMessage Adapter ( val Ġcontext : ĠContext , Ġval Ġmessage List : ĠArrayList < Message >): ĠRecyclerView . Adapter < RecyclerView . ViewHolder >() Ġ{ ĊĊĠĠĠ Ġ// Ġdistinguish Ġsend Ġand Ġreceive ĊĠĠĠ Ġval ĠITEM _ RECEIVE Ġ= Ġ 1 ĊĠĠĠ Ġval ĠITEM _ SENT Ġ= Ġ 2 ĊĊĠĠĠ Ġclass ĠSent ViewHolder ( item View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( item View ){ ĊĠĠĠĠĠĠĠ Ġval Ġsent Message Ġ= ĠitemView . findViewById < TextView >( R . id . text _ sent _ message ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠReceive ViewHolder ( item View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( item View ){ ĊĠĠĠĠĠĠĠ Ġval Ġreceive Message Ġ= ĠitemView . findViewById < TextView >( R . id . text _ receive _ message ) ĊĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġset Ġsend Ġand Ġreceive Ġlayout Ġor Ġposition ĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠRecyclerView . ViewHolder Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif ( view Type Ġ== Ġ 1 ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// inflate Ġreceive ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġview : ĠView Ġ= ĠLayoutInflater . from ( context ). inflate ( R . layout . receive , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠReceive ViewHolder ( view ) ĊĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// inflate Ġsent ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġview : ĠView Ġ= ĠLayoutInflater . from ( context ). inflate ( R . layout . sent , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSent ViewHolder ( view ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠRecyclerView . ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġcurrent Message Ġ= Ġmessage List [ position ] ĊĊĠĠĠĠĠĠĠ Ġif ( holder . java Class Ġ== ĠSent ViewHolder :: class . java ){ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// do Ġthe Ġstuff Ġfor Ġsent Ġview Ġholder ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠviewHolder Ġ= Ġholder Ġas ĠSent ViewHolder ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . sent Message . text Ġ= Ġcurrent Message . message ĊĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// do Ġthe Ġstuff Ġfor Ġreceive Ġholder ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠviewHolder Ġ= Ġholder Ġas ĠReceive ViewHolder ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . receive Message . text Ġ= Ġcurrent Message . message ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġreturn Ġthe Ġmessage Ġlist ĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmessage List . size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem ViewType ( position : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Message Ġ= Ġmessage List [ position ] ĊĠĠĠĠĠĠĠ Ġif ( Firebase Auth . getInstance (). currentUser ?. uid . equals ( current Message . sender Id )){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠITEM _ SENT ĊĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠITEM _ RECEIVE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }