package Ġke k me ch . ru . core ui . adapter Ċ Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġjava . util .* Ċ import Ġjava . util . zip . Inflater Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠKo lo me yt se v ĠAnt on Ġon Ġ 0 9 . 0 7 . 2 0 1 6 . Ċ Ġ* ĠThis Ġclass Ġis Ġa Ġpart Ġof ĠMr . ĠCapt ain Ġproject . Ċ Ġ*/ Ċ open Ġclass ĠBase Adapter Ġ: Ġandroidx . recyclerview . widget . RecyclerView . Adapter < Base ViewHolder >() Ġ{ ĊĊĠĠĠ Ġinternal Ġval Ġview Factories Ġ= Ġhash Map Of < Int , ĠBase Factory >() ĊĠĠĠ Ġprivate Ġval Ġview Cache Ġ= Ġhash Map Of < Int , ĠView >() ĊĠĠĠ Ġval Ġbase Items : ĠMutable List < Base Item <* >> Ġ= ĠArrayList () ĊĠĠĠ Ġvar Ġinflater : ĠLayoutInflater ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem ViewType ( position : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġbase Items [ position ]. getType ( view Factories ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠBase ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbase Items [ position ]. update ViewHolder Native ( holder ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count () Ġ= Ġbase Items . size ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠBase ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( in flater Ġ== Ġnull ) Ġinflater Ġ= ĠLayoutInflater . from ( parent . context ) ĊĠĠĠĠĠĠĠ Ġreturn Ġview Factories [ view Type ] !!. instance Native ( parent , Ġinflater !! ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġadapter Ġ= ĠBase Adapter () ĊĊĠĠĠĠĠĠĠ Ġfun Ġregister ViewType Factory ( factory : ĠBase Factory ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . view Factories Ġ+= Ġadapter . view Factories . size Ġto Ġfactory ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġbuild () Ġ= Ġadapter ĊĠĠĠ Ġ} Ċ Ċ }