package Ġcom . v 5 ent . xi ubit . view . popup window Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . drawable . Color Drawable Ċ import Ġandroid . support . v 4 . content . Context Compat Ċ import Ġandroid . text . TextUtils Ċ import Ġandroid . view . Gravity Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Popup Window Ċ import Ġandroid . widget . TextView Ċ import Ġcom . too bei . common . utils . Toast Util Ċ import Ġcom . too bei . common . view . flow layout . Flow Layout Ċ import Ġcom . too bei . common . view . flow layout . Tag Adapter Ċ import Ġcom . too bei . common . view . flow layout . Tag Flow Layout Ċ import Ġcom . v 5 ent . xi ubit . R Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġh ase e - pc Ġon Ġ 2 0 1 7 / 1 2 / 1 9 . Ċ Ġ*/ Ċ class ĠIn sur ance Test Select Pop u ( val Ġctx : ĠContext ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ, Ġval Ġstr Arr s : ĠArrayList < String > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ, Ġval Ġis Single Select : ĠBoolean Ġ Ġ// æĺ¯åĲ¦ åįķ éĢī ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ, Ġval Ġm No Co Exist Str : ĠString ? ĠĠĠ Ġ// è¿Ļä¸ª åŃĹç¬¦ä¸² å¯¹åºĶçļĦ éĢīé¡¹ ï¼Į å®ĥ è·Ł åħ¶ä»ĸ éĢīé¡¹ ä¸įèĥ½ åħ± åŃĺ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ, Ġval Ġm Fore ver Checked : ĠHashSet < Int >? Ġ= ĠHashSet < Int >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ, Ġval Ġlistener : ĠOn EventListener ? Ġ= Ġnull Ċ Ċ ) Ġ: ĠPopup Window ( ctx ) Ġ{ ĊĊĠĠĠ Ġvar Ġselected Tags : ĠHashSet < Int > Ġ= ĠHashSet () ĊĠĠĠĠ Ġvar Ġadapter : ĠSelect Tag Adapter ? Ġ= Ġnull ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġinit Window () ĊĠĠĠĠĠĠĠ Ġinit View () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit View () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġcont ant Fl Ġ= Ġcontent View . findViewById < Tag Flow Layout >( R . id . cont ant Fl ) ĊĠĠĠĠĠĠĠ Ġval Ġconfirm Btn Ġ= Ġcontent View . findViewById < View >( R . id . confirm Btn ) ĊĠĠĠĠĠĠĠ Ġconfirm Btn . visibility Ġ= Ġif Ġ( is Single Select ) ĠView . GONE Ġelse ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġcont ant Fl . setMax Select Count ( if Ġ( is Single Select ) Ġ 1 Ġelse Ġ- 1 ) ĊĠĠĠĠĠĠĠ Ġadapter Ġ= ĠSelect Tag Adapter ( str Arr s , Ġctx ) ĊĠĠĠĠĠĠĠ Ġcont ant Fl . setAdapter ( adapter , Ġ{ Ġselect Pos Set Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselected Tags Ġ= Ġselect Pos Set Ġas ĠHashSet < Int > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Single Select ) Ġconfirm Select () ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġconfirm Btn . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfirm Select () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġconfirm Select () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( selected Tags . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġarr List Ġ= Ġ ĠArrayList < String >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselected Tags . forEach Ġ{ Ġarr List . add ( adapter !!. getData ()[ it ]) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlistener ?. on Confirm Listener ( selected Tags , arr List ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast Util . show Custom Toast (" æĤ¨ è¿ĺ æľª åģļ éĢīæĭ© ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Window () Ġ{ ĊĠĠĠĠĠĠĠ Ġcontent View Ġ= ĠLayoutInflater . from ( ctx ). inflate ( R . layout . layout _ ins urance _ test _ pop u , Ġnull ) ĊĠĠĠĠĠĠĠ Ġthis . width Ġ= ĠViewGroup . LayoutParams . MATCH _ PARENT ĊĠĠĠĠĠĠĠ Ġthis . height Ġ= ĠViewGroup . LayoutParams . WRAP _ CONTENT ĊĠĠĠĠĠĠĠ Ġthis . is Focus able Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġ// Ġ åĪ·æĸ° çĬ¶æĢģ ĊĠĠĠĠĠĠĠ Ġthis . update () ĊĠĠĠĠĠĠĠ Ġ// Ġ å®ŀä¾ĭ åĮĸ ä¸Ģä¸ª Color Drawable é¢ľèī² ä¸º åįĬ éĢı æĺİ ĊĠĠĠĠĠĠĠ Ġval Ġdw Ġ= ĠColor Drawable ( Context Compat . getColor ( ctx , ĠR . color . Color _ 0 )) ĊĠĠĠĠĠĠĠ Ġthis . setBackground Drawable ( dw )// Ġ çĤ¹ back éĶ® åĴĮ åħ¶ä»ĸ åľ°æĸ¹ ä½¿ åħ¶ æ¶Ī å¤± , è®¾ç½® äºĨ è¿Ļä¸ª æīįèĥ½ è§¦åıĳ On Dismiss listener Ġï¼Į è®¾ç½® åħ¶ä»ĸ æİ§ä»¶ åıĺåĮĸ çŃī æĵįä½ľ ĊĠĠĠĠĠĠĠ Ġthis . is Outside Touchable Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ// Ġm Popup Window . set Animation Style ( android . R . style . Animation _ Dialog ); ĊĠĠĠĠĠĠĠ Ġ// Ġè®¾ç½® Select Pic Popup Window å¼¹ åĩº çªĹ ä½ĵ åĬ¨çĶ» æķĪæŀľ ĊĠĠĠĠĠĠĠ Ġthis . animation Style Ġ= ĠR . style . anim _ popup _ share ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġinner Ġclass ĠSelect Tag Adapter ( val Ġstr Arr s : ĠArrayList < String >, Ġval Ġctx : ĠContext ) Ġ: ĠTag Adapter < String >( str Arr s ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget View ( parent : ĠFlow Layout ?, Ġposition : ĠInt , Ġstr : ĠString ?): ĠView Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠitemView Ġ= ĠLayoutInflater . from ( ctx ). inflate ( R . layout . item _ ins urance _ test _ pop u , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtv Ġ= ĠitemView . findViewById < TextView >( R . id . tv ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv . text Ġ= Ġstr ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠitemView ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Selected ( position : ĠInt , Ġview : ĠView ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Selected ( position , Ġview ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtv Ġ= Ġview ?. findViewById < TextView >( R . id . tv ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv ?. isSelected Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġun Selected ( position : ĠInt , Ġview : ĠView ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . un Selected ( position , Ġview ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtv Ġ= Ġview ?. findViewById < TextView >( R . id . tv ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv ?. isSelected Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Fore ver Checked (): ĠHashSet < Int > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( m Fore ver Checked Ġ== Ġnull ) ĠHashSet < Int >() Ġelse Ġm Fore ver Checked ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget No Co Exist Str (): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġm No Co Exist Str ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun ĠgetData () Ġ: ĠArrayList < String > Ġ= Ġm Tag Datas Ġas ĠArrayList < String > ĊĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠOn EventListener Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon Confirm Listener ( selected Tags Pos : ĠHashSet < Int >, selected Tags Str Arr Ġ: ĠArrayList < String >) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ æĺ¾ç¤º popup Window ĊĠĠĠĠ Ġ* Ġ@ param Ġparent ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġshow Popup Window ( parent : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ctx Ġis ĠActivity Ġ&& Ġ! ctx . is Finish ing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow At Location ( parent , ĠGr avity . BOTTOM , Ġ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊ Ċ }