package Ġp wj . study . drag . swipe Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Rect Ċ import Ġandroid . support . v 7 . widget . Linear LayoutManager Ċ import Ġandroid . support . v 7 . widget . RecyclerView Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . Motion Event Ċ import Ġandroid . view . View Ċ import Ġandroid . view . View Configuration Ċ import Ġandroid . view . animation . Linear Interpolator Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroid . widget . Scroller Ċ import Ġandroid . widget . TextView Ċ import Ġp wj . study . R Ċ import Ġp wj . study . drag . Drag Adapter Ċ Ċ class ĠSw ipe Simple RecyclerView Ġ@ Jvm Over loads Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ? Ġ= Ġnull , Ġdef Style : ĠInt Ġ= Ġ 0 ) Ġ: ĠRecyclerView ( context , Ġattrs , Ġdef Style ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠTAG Ġ= Ġ" Swipe Simple RecyclerView " ĊĊĠĠĠ Ġprivate Ġval Ġm Touch S lop : ĠInt ĊĠĠĠ Ġprivate Ġval ĠmaxLength : ĠInt ĊĠĠĠ Ġprivate Ġval Ġm Scroller : ĠSc roller ĊĠĠĠ Ġprivate Ġvar Ġx Down : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġy Down : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġx Move : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġy Move : ĠInt Ġ= Ġ 0 ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġå½ĵåīį éĢī ä¸ŃçļĦ item ç´¢å¼ķ ï¼Ī è¿Ļä¸ª å¾Ī éĩįè¦ģ ï¼ī ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġcur Select Position : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæĺ¯åĲ¦ æĺ¯ ç¬¬ ä¸Ģæ¬¡ touch ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġis First Ġ= Ġtrue ĊĊĠĠĠ Ġprivate Ġvar Ġm Cur Item Layout : ĠLinearLayout ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Last Item Layout : ĠLinearLayout ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Ll Hidden : ĠLinearLayout ? Ġ= Ġnull // éļĲèĹı éĥ¨åĪĨ ĊĠĠĠ Ġprivate Ġval Ġm Item Content : ĠTextView ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Item Delete : ĠLinearLayout ? Ġ= Ġnull ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ éļĲèĹı éĥ¨åĪĨ éķ¿åº¦ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġm Hidden Width : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ è®°å½ķ è¿ŀ ç»Ń ç§»åĬ¨ çļĦ éķ¿åº¦ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġm Move Width Ġ= Ġ 0 ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġ// æ»ĳ åĬ¨ åĪ° æľĢå°ı è·Ŀç¦» ĊĠĠĠĠĠĠĠ Ġm Touch S lop Ġ= ĠView Configuration . get ( context ). scaled Touch S lop ĊĠĠĠĠĠĠĠ Ġ// æ»ĳ åĬ¨ çļĦ æľĢå¤§ è·Ŀç¦» ĊĠĠĠĠĠĠĠ ĠmaxLength Ġ= Ġ( context . resources . display Metrics . density Ġ* Ġ 1 8 0 Ġ+ Ġ 0 . 5 f ). toInt () ĊĠĠĠĠĠĠĠ Ġ// åĪĿå§ĭåĮĸ Scroller ĊĠĠĠĠĠĠĠ Ġm Scroller Ġ= ĠSc roller ( context , ĠLinear Interpolator ( context , Ġnull )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠåĪłéĻ¤ çļĦ çĽĳåĲ¬ äºĭä»¶ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġm Right Listener : ĠOn Right ClickListener ? Ġ= Ġnull ĊĊĠĠĠ Ġfun Ġset Right ClickListener ( listener : ĠOn Right ClickListener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . m Right Listener Ġ= Ġlistener ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Touch Event ( e : ĠMotion Event ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġe . x . toInt () ĊĠĠĠĠĠĠĠ Ġval Ġy Ġ= Ġe . y . toInt () ĊĠĠĠĠĠĠĠ Ġwhen Ġ( e . action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ DOWN Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx Down Ġ= Ġx ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy Down Ġ= Ġy ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// è®¡ç®Ĺ éĢī ä¸Ń åĵª ä¸ª Item ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfirst Position Ġ= Ġ( layout Manager Ġas ĠLinearLayoutManager ). findFirst Visible Item Position () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Rect Ġ= ĠRect () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcount : ĠInt Ġ= Ġchild Count ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġcount ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchild Ġ= Ġget Child At ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( child . visibility Ġ== ĠView . VISIBLE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchild . get Hit Rect ( item Rect )// èİ·åıĸ View åı¯ çĤ¹åĩ» çŁ© å½¢ å·¦ ãĢģ ä¸Ĭ ãĢģ åı³ ãĢģ ä¸ĭ è¾¹ çķĮ çĽ¸ å¯¹äºİ çĪ¶ View çļĦ å·¦ é¡¶ çĤ¹ çļĦ è·Ŀç¦» ï¼Ī åģı ç§» éĩı ï¼ī ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item Rect . contains ( x , Ġy )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcur Select Position Ġ= Ġfirst Position Ġ+ Ġi // å¾ªçİ¯ çĽ´ èĩ³ èİ·åıĸ åĪ° çĤ¹åĩ» çļĦ child ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// éĩį ç½® åĪ¤æĸŃ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is First ) Ġ{// ç¬¬ ä¸Ģæ¬¡ æĹ¶ ï¼Į ä¸į çĶ¨ éĩį ç½® ä¸Ĭ ä¸Ģæ¬¡ çļĦ Item ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis First Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// å±ı å¹ķ åĨį æ¬¡ æİ¥æĶ¶ åĪ° çĤ¹åĩ» æĹ¶ ï¼Į æģ ¢å¤į ä¸Ĭ ä¸Ģæ¬¡ Item çļĦ çĬ¶æĢģ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Last Item Layout Ġ!= Ġnull Ġ&& Ġm Move Width Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// å°Ĩ Item åı³ ç§» ï¼Į æģ ¢å¤į åİŁ ä½į ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscroll Right ( m Last Item Layout !! , Ġ( 0 Ġ- Ġm Move Width )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// æ¸ħ ç©º åıĺéĩı ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Hidden Width Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Move Width Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// åıĸ åĪ° å½ĵåīį éĢī ä¸ŃçļĦ Item ï¼Į èµĭ ç»Ļ m Cur Item Layout ï¼Į ä»¥ ä¾¿ å¯¹ åħ¶ è¿Ľè¡Į å·¦ ç§» ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġget Child At ( cur Select Position Ġ- Ġfirst Position ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// èİ·åıĸ å½ĵåīį éĢī ä¸ŃçļĦ item ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠviewHolder Ġ= Ġget Child ViewHolder ( item ) Ġas ĠDrag Adapter . ViewHolder ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Cur Item Layout Ġ= ĠviewHolder . ll _ item ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// æī¾åĪ° åħ·ä½ĵ åħĥç´ł ï¼Ī è¿Ļ ä¸İ å®ŀéĻħ ä¸ļåĬ¡ çĽ¸åħ³ äºĨ ~~ ï¼ī ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Ll Hidden Ġ= Ġm Cur Item Layout ?. findViewById ( R . id . ll _ hidden ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Item Delete Ġ= Ġm Cur Item Layout ?. findViewById ( R . id . ll _ hidden ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Item Delete ?. setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Right Listener ?. on Right Click ( cur Select Position , Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// è¿ĻéĩĮ å°Ĩ åĪłéĻ¤ æĮīéĴ® çļĦ å®½åº¦ è®¾ ä¸º åı¯ä»¥ ç§»åĬ¨ çļĦ è·Ŀç¦» ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Hidden Width Ġ= Ġm Ll Hidden !!. width ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ MOVE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx Move Ġ= Ġx ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy Move Ġ= Ġy ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdx Ġ= Ġx Move Ġ- Ġx Down // ä¸º è´Ł æĹ¶ ï¼ļ æīĭ æĮĩåĲĳ å·¦ æ»ĳ åĬ¨ ï¼Ľ ä¸º æŃ£ æĹ¶ ï¼ļ æīĭ æĮĩåĲĳ åı³ æ»ĳ åĬ¨ ãĢĤ è¿Ļ ä¸İ Android çļĦ å±ı å¹ķ åĿĲæłĩ å®ļä¹ī æľī åħ³ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdy Ġ= Ġy Move Ġ- Ġy Down ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( dx Ġ< Ġ 0 Ġ&& ĠMath . abs ( dx ) Ġ> Ġm Touch S lop Ġ&& ĠMath . abs ( dy ) Ġ< Ġm Touch S lop ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġnew Scroll X Ġ= ĠMath . abs ( dx ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Move Width Ġ>= Ġm Hidden Width ) Ġ{// è¶ħè¿ĩ äºĨ ï¼Į ä¸įèĥ½ åĨį ç§»åĬ¨ äºĨ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Scroll X Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( m Move Width Ġ+ Ġnew Scroll X Ġ> Ġm Hidden Width ) Ġ{// è¿Ļ æ¬¡ è¦ģ è¶ħ äºĨ ï¼Į ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Scroll X Ġ= Ġm Hidden Width Ġ- Ġm Move Width ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// å·¦ æ»ĳ ï¼Į æ¯ıæ¬¡ æ»ĳ åĬ¨ æīĭ æĮĩ ç§»åĬ¨ çļĦ è·Ŀç¦» ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscroll Left ( m Cur Item Layout !! , Ġnew Scroll X ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// å¯¹ ç§»åĬ¨ çļĦ è·Ŀç¦» åı ł åĬł ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Move Width Ġ+= Ġnew Scroll X ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( dx Ġ> Ġ 0 ) Ġ{// åı³ æ»ĳ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// æī§è¡Į åı³ æ»ĳ ï¼Į è¿ĻéĩĮ æ²¡æľī åģļ è·Ł éļı ï¼Į ç ŀ ¬ éĹ´ æģ ¢å¤į ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscroll Right ( m Cur Item Layout !! , Ġ 0 Ġ- Ġm Move Width ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Move Width Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ UP Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscroll X Ġ= Ġm Cur Item Layout ?. scroll X Ġ?: Ġ 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Hidden Width Ġ> Ġm Move Width ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġto X Ġ= Ġ( m Hidden Width Ġ- Ġm Move Width ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Move Width Ġ= Ġif Ġ( scroll X Ġ> Ġm Hidden Width Ġ/ Ġ 2 ) Ġ{// è¶ħè¿ĩ ä¸Ģ åįĬ éķ¿åº¦ æĹ¶ æĿ ¾ å¼Ģ ï¼Į åĪĻ èĩªåĬ¨ æ»ĳ åĪ° å·¦ ä¾§ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscroll Left ( m Cur Item Layout !! , Ġto X ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Hidden Width ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{// ä¸įåĪ° ä¸Ģ åįĬ æĹ¶ æĿ ¾ å¼Ģ ï¼Į åĪĻ æģ ¢å¤į åİŁ çĬ¶ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscroll Right ( m Cur Item Layout !! , Ġ 0 Ġ- Ġm Move Width ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Last Item Layout Ġ= Ġm Cur Item Layout ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Touch Event ( e ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcompute Scroll () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( m Scroller . compute Scroll Offset ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" compute Scroll Ġget Curr X Ġ-> " Ġ+ Ġm Scroller . curr X ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Cur Item Layout ?. scroll By ( m Scroller . curr X , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ åĲĳ å·¦ æ»ĳ åĬ¨ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġscroll Left ( item : ĠView , Ġsc or ll X : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" Ġscroll Ġleft Ġ-> Ġ$ sc or ll X ") ĊĠĠĠĠĠĠĠ Ġitem . scroll By ( sc or ll X , Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ åĲĳ åı³ æ»ĳ åĬ¨ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġscroll Right ( item : ĠView , Ġsc or ll X : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" Ġscroll Ġright Ġ-> Ġ$ sc or ll X ") ĊĠĠĠĠĠĠĠ Ġitem . scroll By ( sc or ll X , Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠOn Right ClickListener Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon Right Click ( position : ĠInt , Ġid : ĠString ) ĊĠĠĠ Ġ} Ċ Ċ }