/* Ċ Ġ* ĠMIT ĠLicense Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 8 ĠH oss ain ĠK han Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ċ Ġ* Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE Ċ Ġ* ĠSOFTWARE . Ċ Ġ*/ Ċ Ċ package Ġinfo . ho ss ain k han . d ail yn ews head lines Ċ Ċ import Ġandroid . support . v 7 . widget . RecyclerView Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . TextView Ċ import Ġinfo . ho ss ain k han . android . core . model . News Category Head lines Ċ import Ġinfo . ho ss ain k han . android . core . model . News Head lines Ċ import Ġkotlinx . android . synt hetic . main . list _ item _ news _ source . view .* Ċ import Ġtim ber . log . Tim ber Ċ Ċ /** Ċ Ġ* ĠAdapter Ġto Ġhold Ġall Ġthe Ġhead lines Ġfrom Ġall Ġnews Ġsources . Ċ Ġ* ĠThis Ġcontains ĠList Ġof Ġ[ News Head lines ] Ġthat Ġcontains Ġthe Ġnews Ġsource Ġand Ġtheir Ġlist Ġof Ġ[ News Category Head lines ] Ċ Ġ*/ Ċ class ĠNews Source Adapter ( private Ġval Ġhead lines : ĠList < News Head lines >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġclick Listener : Ġ( News Category Head lines ) Ġ-> ĠUnit ) ĊĠĠĠ Ġ: ĠRecyclerView . Adapter < News Source Adapter . ViewHolder >() Ġ{ ĊĊĠĠĠ Ġval Ġnavigation Row Sizes : ĠList < Int > Ġ= Ġhead lines . map Ġ{ Ġit . categories Head lines . size Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġhead lines . sum By Ġ{ Ġit . categories Head lines . size Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠViewHolder ?, Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠTim ber . d (" on Bind ViewHolder Ġcalled Ġwith Ġholder : Ġ[$ holder ], Ġposition : Ġ[$ position ]") ĊĠĠĠĠĠĠĠ Ġif Ġ( position . rem ( 2 ) Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder !!. item Container . background Ġ= Ġholder . item Container . context ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get Drawable ( R . color . news _ source _ item _ highlight ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġval Ġnavigation Row Ġ= Ġget Row For Position ( position ) ĊĠĠĠĠĠĠĠ ĠTim ber . d (" Found Ġnavigation Ġrow Ġ[ ${ navigation Row . title }] Ġfor Ġposition Ġ[$ position ]") ĊĠĠĠĠĠĠĠ Ġholder !!. content View . text Ġ= Ġnavigation Row . display Title Ġ?: Ġnavigation Row . title ĊĊĠĠĠĠĠĠĠ Ġholder . item Container . setOnClickListener ({ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠNOTE Ġ- Ġget Ġadapter Ġpost ion Ġfor Ġcurrent Ġitem ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclick Listener . invoke ( getRow For Position ( position )) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup ?, Ġview Type : ĠInt ): ĠViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= ĠLayoutInflater . from ( parent ?. context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. inflate ( R . layout . list _ item _ news _ source , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn ĠViewHolder ( view ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠViewHolder ( item Root View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( item Root View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġitem Container Ġ= Ġitem Root View ĊĠĠĠĠĠĠĠ Ġval Ġcontent View : ĠTextView Ġ= Ġitem Root View . news _ source _ item _ title ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFinds Ġthe Ġnavigation Ġrow Ġfor Ġgiven Ġposition Ġfrom Ġ[ head lines ] Ġdata Ġset . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ``` ĊĠĠĠĠ Ġ* Ġ ĠNews Head lines Ġ-> Ġ[ Source ] Ġ-> ĠList < News Category Head lines > ĊĠĠĠĠ Ġ* Ġ Ġ[ 0 ] ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- ĠRow Ġ 1 Ġ[ 0 ] ĊĠĠĠĠ Ġ* Ġ Ġ[ 1 ] ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- ĠRow Ġ 2 Ġ[ 1 ] ĊĠĠĠĠ Ġ* Ġ ĠNews Head lines Ġ-> Ġ[ Source ] Ġ-> ĠList < News Category Head lines > ĊĠĠĠĠ Ġ* Ġ Ġ[ 2 ] ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- ĠRow Ġ 1 Ġ[ 0 ] ĊĠĠĠĠ Ġ* Ġ Ġ[ 3 ] ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- ĠRow Ġ 2 Ġ[ 1 ] ĊĠĠĠĠ Ġ* Ġ Ġ[ 4 ] ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- ĠRow Ġ 3 Ġ[ 2 ] ĊĠĠĠĠ Ġ* Ġ ĠNews Head lines Ġ-> Ġ[ Source ] Ġ-> ĠList < News Category Head lines > ĊĠĠĠĠ Ġ* Ġ Ġ[ 5 ] ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- ĠRow Ġ 1 Ġ[ 0 ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ Ġget Row For Position ( position Ġ= Ġ 2 ) ĊĠĠĠĠ Ġ* Ġ Ġh 1 Ġ= Ġcount Ġ= Ġ 2 Ġ| Ġsum Ġ= Ġ 2 ĊĠĠĠĠ Ġ* Ġ Ġh 2 Ġ= Ġcount Ġ= Ġ 3 Ġ| Ġsum Ġ= Ġ 5 ĊĠĠĠĠ Ġ* Ġ Ġh 3 Ġ= Ġcount Ġ= Ġ 1 Ġ| Ġsum Ġ= Ġ 6 ĊĠĠĠĠ Ġ* Ġ``` ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġget Row For Position ( position : ĠInt ): ĠNews Category Head lines Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġsum Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġheadline Index Ġ= Ġ- 1 ĊĊĠĠĠĠĠĠĠ Ġvar Ġindex Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġfor Ġ( size Ġin Ġnavigation Row Sizes ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" Getting Ġrow Ġfor Ġposition Ġ% d , Ġindex =% d , Ġsize =% d ", Ġposition , Ġindex , Ġsize ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsum Ġ+= Ġsize ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( position Ġ< Ġsum ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheadline Index Ġ= Ġindex ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" Found Ġrow Ġfor Ġposition Ġ% d , Ġindex =% d , Ġsum =% d ", Ġposition , Ġindex , Ġsum ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" Unable Ġto Ġfind Ġrow Ġfor Ġposition Ġ% d , Ġindex =% d , Ġsum =% d ", Ġposition , Ġindex , Ġsum ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindex ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġhead lines [ headline Index ]. categories Head lines [ sum Ġ- Ġposition Ġ- Ġ 1 ] ĊĠĠĠ Ġ} Ċ }