package Ġru . gr ak hell . user viewer . ui . fragments . search Result Fragment . view Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . paging . Paged ListAdapter Ċ import Ġandroidx . recyclerview . widget . Diff Util Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġbutter knife . BindView Ċ import Ġbutter knife . B utter Kn ife Ċ import Ġio . reactivex . subjects . Behavior Subject Ċ import Ġru . gr ak hell . user viewer . R Ċ import Ġru . gr ak hell . user viewer . domain . entity . GetUser SearchResult Query Ċ import Ġru . gr ak hell . user viewer . injection . module . G lide App Ċ Ċ class ĠSearch Result RecyclerView Adapter Ġ: ĠP aged ListAdapter < GetUser SearchResult Query . As User , ĊĠĠĠ ĠSearch Result RecyclerView Adapter . ViewHolder > ĊĠĠĠ Ġ( CALLBACK ()) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġpublisher : ĠBehavior Subject < GetUser SearchResult Query . As User > Ġ= ĠBehavior Subject . create () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= ĠLayoutInflater . from ( parent . context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. inflate ( R . layout . fragment _ search result , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn ĠViewHolder ( view ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġholder . bind ( getItem ( position )) ĊĠĠĠĠĠĠĠ Ġval Ġitem Ġ= ĠgetItem ( position ) ĊĠĠĠĠĠĠĠ Ġwith ( holder . m View ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item Ġ!= Ġnull ) publisher . onNext ( item ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Clicked Items () Ġ= Ġpublisher ĊĊĠĠĠ Ġinner Ġclass ĠViewHolder ( val Ġm View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( m View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠB utter Kn ife . bind ( this , Ġm View ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ@ BindView ( R . id . tv Login ) Ġlateinit Ġvar Ġm Login : ĠTextView ĊĠĠĠĠĠĠĠ Ġ@ BindView ( R . id . tv Name ) Ġlateinit Ġvar Ġm Name : ĠTextView ĊĠĠĠĠĠĠĠ Ġ@ BindView ( R . id . tv Repo ) Ġlateinit Ġvar Ġm Repositories : ĠTextView ĊĠĠĠĠĠĠĠ Ġ@ BindView ( R . id . star Count ) Ġlateinit Ġvar Ġm Star Count : ĠTextView ĊĠĠĠĠĠĠĠ Ġ@ BindView ( R . id . iv Avatar ) Ġlateinit Ġvar Ġm Avatar : ĠImageView ĊĊĠĠĠĠĠĠĠ Ġfun Ġbind ( item : ĠGetUser SearchResult Query . As User ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item ?. login () Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Login . text Ġ= ĠitemView . resources . getString ( R . string . User No Login ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Login . text Ġ= ĠString . format ( item View . resources . getString ( R . string . User Login ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . login ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item ?. name () Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Name . text Ġ= ĠitemView . resources . getString ( R . string . User No Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Name . text Ġ= ĠString . format ( item View . resources . getString ( R . string . UserName ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . name ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Repositories . text Ġ= ĠString . format ( item View . resources . getString ( R . string . User Repositories ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem ?. repositories ()?. total Count ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Star Count . text Ġ= Ġitem ?. star red Repositories ()?. total Count (). toString () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠG lide App . with ( m View ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( item ?. avatar Url ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( m Avatar ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠCALL BACK Ġ: ĠDiff Util . Item Callback < GetUser SearchResult Query . As User >() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Contents The Same ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġold Item : ĠGetUser SearchResult Query . As User , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Item : ĠGetUser SearchResult Query . As User ĊĠĠĠĠĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġold Item Ġ== Ġnew Item ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Items The Same ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġold Item : ĠGetUser SearchResult Query . As User , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Item : ĠGetUser SearchResult Query . As User ĊĠĠĠĠĠĠĠ Ġ): ĠBoolean Ġ= Ġold Item . id () Ġ== Ġnew Item . id () ĊĠĠĠ Ġ} Ċ } Ċ