package Ġcom . ro cb il low . core . extension Ċ Ċ import Ġandroid . view . View Ċ import Ġandroidx . core . view . post Delayed Ċ import Ġcom . jak ew h art on . r xb ind ing 4 . view . click s Ċ import Ġio . reactivex . rx java 3 . dis pos ables . Disposable Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ const Ġval ĠTH RO TT LE _ DURATION Ġ= Ġ 1 5 0 0 L Ċ Ċ inline Ġfun ĠView . setOn Throttle ClickListener By Rx ( cross inline ĠonClick : Ġ( View ) Ġ-> ĠUnit ): ĠDis posable Ġ= ĊĠ Ġclicks () ĊĠĠĠ Ġ. throttle First ( TH RO TT LE _ DURATION , ĠTimeUnit . MILLISECONDS ) ĊĠĠĠ Ġ. subscribe Ġ{ ĠonClick ( this ) Ġ} Ċ Ċ inline Ġfun ĠView . setOn Throttle ClickListener By Clickable ( cross inline ĠonClick : Ġ( View ) Ġ-> ĠUnit ) Ġ{ ĊĠ Ġset OnClickListener Ġ{ ĊĠĠĠ ĠonClick ( it ) ĊĠĠĠ Ġwith ( it ) Ġ{ ĊĠĠĠĠĠ Ġis Clickable Ġ= Ġfalse ĊĠĠĠĠĠ Ġpost Delayed ( TH RO TT LE _ DURATION ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis Clickable Ġ= Ġtrue ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ Ċ inline Ġfun ĠView . setOn Throttle ClickListener ( cross inline ĠonClick : Ġ( View ) Ġ-> ĠUnit ) Ġ{ ĊĠ Ġvar Ġlast Time Millis Ġ= Ġ 0 L ĊĠ Ġval ĠcurrentTime Millis Ġ= ĠSystem . currentTimeMillis () ĊĠ Ġif Ġ( currentTimeMillis Ġ- Ġlast Time Millis Ġ> ĠTH RO TT LE _ DURATION ) Ġ{ ĊĠĠĠ Ġset OnClickListener Ġ{ ĊĠĠĠĠĠ ĠonClick ( it ) ĊĠĠĠĠĠ Ġlast Time Millis Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ Ċ inline Ġfun ĠView . setOn Double ClickListener ( cross inline ĠonClick : Ġ( View ) Ġ-> ĠUnit ) Ġ{ ĊĠ Ġvar Ġis Clicked Once Ġ= Ġfalse ĊĠ Ġset OnClickListener Ġ{ ĊĠĠĠ Ġif Ġ(! is Clicked Once ) Ġ{ ĊĠĠĠĠĠ Ġis Clicked Once Ġ= Ġtrue ĊĠĠĠĠĠ Ġpost Delayed ( 1 0 0 0 L ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis Clicked Once Ġ= Ġfalse ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġreturn @ setOnClickListener ĊĠĠĠ Ġ} ĊĠĠĠ ĠonClick ( this ) ĊĠ Ġ} Ċ }