/* Ċ Ġ* ĠCopyright Ġ 2 0 1 5 - 2 0 1 6 ĠC ody ĠGold berg Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġio . github . pref an atic . to oman ys ensors . adapter Ċ Ċ import Ġandroid . support . v 7 . widget . RecyclerView Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġrx . subjects . Publish Subject Ċ Ċ abstract Ġclass ĠObservable Adapter < O , ĠV Ġ: ĠObservable ViewHolder > Ġ: ĠList Adapter < O , ĠV >() Ġ{ ĊĠĠĠ Ġprivate Ġval Ġclick Subject : ĠPublish Subject < Click Event > Ġ= ĠPublish Subject . create () ĊĠĠĠ Ġprivate Ġvar Ġre cycler : ĠRecyclerView ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar ĠviewHolder Factory : Ġ(( A : ĠView ?) Ġ-> ĠV )? Ġ= Ġnull ĊĊĠĠĠ Ġinner Ġclass ĠClick Event ( val Ġobj : ĠO , Ġval ĠviewHolder : ĠV ) ĊĊĠĠĠ Ġpublic Ġfun Ġget Click Observable () Ġ= Ġclick Subject . as Observable () ĊĊĠĠĠ Ġoverride Ġfun Ġon Attached To RecyclerView ( re cyclerView : ĠRecyclerView ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġre cycler Ġ= Ġre cyclerView ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Detached From RecyclerView ( re cyclerView : ĠRecyclerView ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġre cycler Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġfun Ġapply ViewHolder ( factory : Ġ( A : ĠView ?) Ġ-> ĠV ) Ġ{ ĊĠĠĠĠĠĠĠ ĠviewHolder Factory Ġ= Ġfactory ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup ?, Ġview Type : ĠInt ): ĠV Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( view Holder Factory Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠRuntimeException (" No ĠViewHolder Factory Ġapplied Ġto ĠObservable Adapter !") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval ĠviewHolder Ġ= Ġ( view Holder Factory !! )( LayoutInflater . from ( parent ?. context ). inflate ( get Layout Resource (), Ġparent , Ġfalse )) ĊĊĠĠĠĠĠĠĠ Ġ// ĠIs Ġthis Ġthe Ġbest Ġway Ġto Ġdo Ġthis ? ĊĠĠĠĠĠĠĠ ĠviewHolder . get Click Observable (). map Ġ{ ĠClick Event ( data [ view Holder . adapter Position ], ĠviewHolder ) Ġ}. subscribe Ġ{ Ġclick Subject . onNext ( it ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠviewHolder ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġabstract Ġfun Ġget Layout Resource (): ĠInt Ċ }