package Ġme . vid ro x . stock ii . adapters Ċ Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . os . Handler Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġco il . api . load Ċ import Ġkotlinx . android . synt hetic . main . ship ments _ card . view .* Ċ import Ġme . vid ro x . stock ii . R Ċ import Ġme . vid ro x . stock ii . api . ship ments . Shipment Ċ import Ġme . vid ro x . stock ii . listeners . Constants Ċ import Ġme . vid ro x . stock ii . listeners . RecyclerView ItemClickListener Ċ import Ġkotlin . collections . ArrayList Ċ import Ġkotlin . collections . HashMap Ċ Ċ class ĠShip ments RecyclerView Adapter ( var Ġship ments : ĠArrayList < Shipment ? >, Ġvar Ġship ments Icons : ĠHashMap < Shipment , ĠDrawable >) Ġ: ĊĠĠĠ ĠRecyclerView . Adapter < Ship ments RecyclerView Adapter . Ship ments ViewHolder >() Ġ{ ĊĊĠĠĠ Ġvar Ġitem ClickListener : ĠRecyclerView ItemClickListener < Shipment >? Ġ= Ġnull ĊĊĠĠĠ Ġfun Ġupdate Data ( new Ship ments : ĠList < Shipment >, Ġnew Icons : ĠHashMap < Shipment , ĠDrawable >, Ġclear Items : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( clear Items ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġship ments . clear () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġship ments Icons . clear () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġship ments . addAll ( new Ship ments ) ĊĠĠĠĠĠĠĠ Ġship ments Icons Ġ= Ġnew Icons ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠShip ments ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( view Type Ġ== ĠConstants . VIEW _ TYPE _ ITEM ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġview Ġ= ĠLayoutInflater . from ( parent . context ). inflate ( R . layout . ship ments _ card , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠShip ments ViewHolder ( view ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġview Ġ= ĠLayoutInflater . from ( parent . context ). inflate ( R . layout . list _ progress , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠShip ments ViewHolder ( view ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ= Ġship ments . size ĊĊĠĠĠ Ġfun Ġset Loading ( isLoading : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( isLoading ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ship ments . size Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHandler (). post Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġship ments . add ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Item Inserted ( ship ments . size Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ship ments . size Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġship ments . remove At ( ship ments . size Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Item Removed ( ship ments . size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠShip ments ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( holder . item ViewType Ġ== ĠConstants . VIEW _ TYPE _ ITEM ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġship ment Ġ= Ġship ments [ position ] !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġship ment Icon Ġ= Ġship ments Icons [ shipment ] !! ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . bind ( shipment , Ġship ment Icon , Ġitem ClickListener ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem ViewType ( position : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( ship ments [ position ] Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . VIEW _ TYPE _ LOADING ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . VIEW _ TYPE _ ITEM ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠShip ments ViewHolder ( view : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( view ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġship ment ProductName Ġ= Ġview . ship ments _ product ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġship ment Provider Ġ= Ġview . ship ments _ provider ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġship ment Warehouse Location Ġ= Ġview . ship ments _ warehouse _ location ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġship ment Status Ġ= Ġview . ship ments _ status ĊĊĠĠĠĠĠĠĠ Ġfun Ġbind ( shipment : ĠShip ment , Ġicon : ĠDrawable , Ġitem ClickListener : ĠRecyclerView ItemClickListener < Shipment > ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġship ment ProductName . text Ġ= Ġship ment . product . name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġship ment Warehouse Location . text Ġ= Ġship ment . product . warehouse . location ĊĠĠĠĠĠĠĠĠĠĠĠ Ġship ment Provider . text Ġ= Ġship ment . provider . name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġship ment Status . load ( icon ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . setOnClickListener Ġ{ Ġitem ClickListener ?. onClick ( shipment ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . setOn Long ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem ClickListener ?. on Long Click ( it , Ġship ment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }