package Ġcom . ft inc . g iphy . search . adapter Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . support . v 7 . util . Diff Util Ċ import Ġandroid . support . v 7 . widget . RecyclerView Ċ import Ġandroid . support . v 7 . widget . RecyclerView . NO _ ID Ċ import Ġandroid . view . ViewGroup Ċ import Ġcom . ft inc . g iphy . api . model . Gif Ċ import Ġcom . ft inc . g iphy . api . model . R end ition Ċ import Ġcom . ft inc . kit . kotlin . adapter . Diff Callback Ċ import Ġcom . ft inc . kit . kotlin . adapter . List Recycler Adapter ĊĊ Ċ class ĠG if Recycler Adapter ( context : ĠContext , Ġrend ition : ĠR end ition ? Ġ= Ġnull ) Ġ: ĠList Recycler Adapter < Gif , ĠG if ViewHolder >( context ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠG if ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠG if ViewHolder . create ( in flater , Ġparent ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( vh : ĠG if ViewHolder , Ġi : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Bind ViewHolder ( vh , Ġi ) ĊĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġitems [ i ] ĊĠĠĠĠĠĠĠ Ġv h . bind ( item ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġset G ifs ( gif s : ĠList < Gif >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdiff Ġ= ĠDiff Util . calculate Diff ( Gif Diff Callback ( items , Ġg ifs )) ĊĠĠĠĠĠĠĠ Ġitems Ġ= Ġg ifs . to Mutable List () ĊĠĠĠĠĠĠĠ Ġdiff . dispatch Updates To ( getList Update Callback ()) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġclass ĠG if Diff Callback ( val Ġold Items : ĠList < Gif >, Ġval Ġnew Items : ĠList < Gif >) Ġ: ĠDiff Util . Callback () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Old List Size (): ĠInt Ġ= Ġold Items . size ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget New List Size (): ĠInt Ġ= Ġnew Items . size ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Items The Same ( old Item Position : ĠInt , Ġnew Item Position : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġold Items [ old Item Position ]. id Ġ== Ġnew Items [ new Item Position ]. id ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Contents The Same ( old Item Position : ĠInt , Ġnew Item Position : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġold Items [ old Item Position ]. hashCode () Ġ== Ġnew Items [ new Item Position ]. hashCode () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ }