package Ġcn . cq aut ot est . sun ny be ach . ui . activity Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . app . Activity Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . view . WindowManager Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroidx . activity . view Models Ċ import Ġandroidx . core . view . isVisible Ċ import Ġandroidx . core . widget . add TextChanged Listener Ċ import Ġandroidx . lifecycle . lifecycle Scope Ċ import Ġandroidx . recyclerview . widget . Grid LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġby . kir ich 1 4 0 9 . view binding delegate . view Binding Ċ import Ġcn . cq aut ot est . sun ny be ach . R Ċ import Ġcn . cq aut ot est . sun ny be ach . app . App Activity Ċ import Ġcn . cq aut ot est . sun ny be ach . databinding . Image Choose Item Binding Ċ import Ġcn . cq aut ot est . sun ny be ach . databinding . Put Fish Activity Binding Ċ import Ġcn . cq aut ot est . sun ny be ach . model . Fish P ond Topic List Ċ import Ġcn . cq aut ot est . sun ny be ach . other . Intent Key Ċ import Ġcn . cq aut ot est . sun ny be ach . ui . dialog . Input Dialog Ċ import Ġcn . cq aut ot est . sun ny be ach . util .* Ċ import Ġcn . cq aut ot est . sun ny be ach . view model . app . Repository Ċ import Ġcn . cq aut ot est . sun ny be ach . view model . fish p ond . Fish P ond ViewModel Ċ import Ġcom . blank j . util code . util . Keyboard Utils Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . with Context Ċ import Ġtim ber . log . Tim ber Ċ import Ġjava . io . File Ċ Ċ /** Ċ Ġ* Ġauthor Ġ: ĠA ĠL on ely ĠCat Ċ Ġ* Ġgithub Ġ: Ġhttps :// github . com / an ji emo / Sun ny Be ach Ċ Ġ* Ġtime ĠĠ Ġ: Ġ 2 0 2 1 / 0 9 / 1 1 Ċ Ġ* Ġdesc ĠĠ Ġ: Ġ åıĳå¸ĥ æĳ ¸ é±¼ çļĦ çķĮéĿ¢ Ċ Ġ*/ Ċ class ĠPut Fish Activity Ġ: ĠApp Activity (), ĠImage Select Activity . On Photo Select Listener Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġm Binding : ĠPut Fish Activity Binding Ġby Ġview Binding () ĊĠĠĠ Ġprivate Ġval Ġm Fish P ond ViewModel Ġby Ġview Models < Fish P ond ViewModel >() ĊĠĠĠ Ġprivate Ġval Ġm Preview Adapter Ġby Ġlazy Ġ{ ĠImage Preview Adapter () Ġ} ĊĠĠĠ Ġprivate Ġval Ġsoft Keyboard Listener Ġ= Ġget Soft Keyboard Listener () ĊĠĠĠ Ġprivate Ġvar Ġm Topic Id : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Link Url : ĠString ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġget Layout Id (): ĠInt Ġ= ĠR . layout . put _ fish _ activity ĊĊĠĠĠ Ġoverride Ġfun Ġinit Soft Keyboard () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . init Soft Keyboard () ĊĠĠĠĠĠĠĠ Ġregister Soft Keyboard Listener ( soft Keyboard Listener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġun Register Soft Keyboard Listener ( soft Keyboard Listener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit View () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrv Preview Image Ġ= Ġm Binding . rv Preview Image ĊĠĠĠĠĠĠĠ Ġrv Preview Image . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager Ġ= ĠGrid LayoutManager ( context , Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġm Preview Adapter ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit Data () Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" SetText I 1 8 n ") ĊĠĠĠ Ġoverride Ġfun Ġinit Event () Ġ{ ĊĠĠĠĠĠĠĠ Ġpost Delayed ({ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Keyboard ( m Binding . et Input Content ) ĊĠĠĠĠĠĠĠ Ġ}, Ġ 2 0 0 ) ĊĠĠĠĠĠĠĠ Ġm Binding . rl Choose Fish P ond . set Fix OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ éĢīæĭ© é±¼ å¡ ĺ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity For Result ( Fish P ond Selection Activity :: class . java ) Ġ{ ĠresultCode , Ġdata Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result Code Ġ== ĠActivity . RESULT _ OK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfish P ond Topic ListItem Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfrom Json < Fish P ond Topic List . Topic Item >( data . getString Extra ( Intent Key . OTHER )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Topic Id Ġ= Ġfish P ond Topic ListItem ?. id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtv Choose Fish P ond Desc Ġ= Ġm Binding . tv Choose Fish P ond Desc ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Binding . tv Choose Fish P ond . text Ġ= Ġ"# ${ fish P ond Topic ListItem . topic Name } #" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv Choose Fish P ond Desc . text Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreset Topic () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm Binding . iv Emoji . set Fix OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ éĢīæĭ© è¡¨ æĥħ ï¼Į å¼¹ åĩº è¡¨ æĥħ éĢīæĭ© åĪĹè¡¨ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkeyboard Is Showing Ġ= ĠKeyboard Utils . is Soft Input Visible ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( keyboard Is Showing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost Delayed ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Binding . rv Emoji List . isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Binding . rv Emoji List . layout Params Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLinearLayout . LayoutParams ( LinearLayout . LayoutParams . MATCH _ PARENT , Ġ 3 1 0 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ 2 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhide Keyboard () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Binding . rv Emoji List . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Keyboard ( m Binding . et Input Content ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġemoji Icon Ġ= Ġif Ġ( keyboard Is Showing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . mip map . ic _ keyboard ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . mip map . ic _ emoji _ normal ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( emoji Icon ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( m Binding . iv Emoji ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm Binding . rv Emoji List . setOn Emoji ClickListener Ġ{ Ġemoji , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġet Input Content Ġ= Ġm Binding . et Input Content ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcursor Ġ= Ġet Input Content . selection Start ĊĠĠĠĠĠĠĠĠĠĠĠ Ġet Input Content . text . insert ( cursor , Ġemoji ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm Binding . iv Image . set Fix OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO : Ġ 2 0 2 1 / 9 / 1 1 Ġ éĢīæĭ© åĽ¾çīĩ ï¼Į è·³è½¬ èĩ³ åĽ¾çīĩ éĢīæĭ© çķĮéĿ¢ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġsimple Toast (" æļĤ ä¸į æĶ¯æĮģ éĢīæĭ© åĽ¾çīĩ ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ éĢīæĭ© åĽ¾çīĩ ï¼Į è·³è½¬ åĪ° åĽ¾çīĩ éĢīæĭ© çķĮéĿ¢ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠImage Select Activity . start ( this , Ġ 9 , Ġthis ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm Binding . iv Link . set Fix OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ å¼¹ åĩº éĵ¾æİ¥ è¾ĵåħ¥ å¯¹ è¯Ŀ æ¡Ĩ ï¼Į æ·»åĬł Ġurl Ġ éĵ¾æİ¥ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInput Dialog . Builder ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle (" æ·»åĬł éĵ¾æİ¥ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Hint (" http ( s ) :// ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setContent ( m Link Url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Canceled On Touch Outside ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Listener Ġ{ Ġ_, Ġcontent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Link Url Ġ= Ġcontent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsimple Toast ( content ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm Binding . et Input Content . set Fix OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Binding . keyboard Layout . post Delayed ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . set Soft Input Mode ( WindowManager . LayoutParams . SOFT _ INPUT _ ADJ UST _ RE SIZE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ 2 5 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġcl Menu Container Ġ= Ġm Binding . cl Menu Container ĊĠĠĠĠĠĠĠ Ġm Binding . keyboard Layout . set Keyboard Listener Ġ{ ĠisActive , Ġkeyboard Height Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġheight Ġ= Ġif Ġ( isActive ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Binding . rv Emoji List . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkeyboard Height ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ-( cl Menu Container . height Ġ+ Ġ 1 0 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlayout Params Ġ= ĠLinearLayout . LayoutParams ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLinearLayout . LayoutParams . MATCH _ PARENT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLinearLayout . LayoutParams . WRAP _ CONTENT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreal Height Ġ= Ġheight Ġ+ Ġcl Menu Container . height Ġ+ Ġ 1 0 . dp ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Params . bottom Margin Ġ= Ġreal Height ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcl Menu Container . layout Params Ġ= Ġlayout Params ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġnormal Color Ġ= ĠColor . parse Color ("# CB D 0 D 3 ") ĊĠĠĠĠĠĠĠ Ġval Ġoverflow Color Ġ= ĠColor . RED ĊĠĠĠĠĠĠĠ Ġm Binding . et Input Content . add TextChanged Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ æľĢå¤§ åŃĹç¬¦ è¾ĵåħ¥ éķ¿åº¦ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmax Input Text Length Ġ= Ġ 5 1 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ æľĢå°ı åŃĹç¬¦ è¾ĵåħ¥ éķ¿åº¦ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmin Input Text Length Ġ= Ġ 5 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinput Length Ġ= Ġm Binding . et Input Content . length () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠåĪ¤æĸŃ è¾ĵåħ¥ çļĦ åŃĹç¬¦ éķ¿åº¦ æĺ¯åĲ¦ æº ¢ åĩº ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Overflow Ġ= Ġ( max Input Text Length Ġ- Ġinput Length ) Ġ< Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Binding . tv Input Length . text Ġ= Ġ"${ input Length }/ $ max Input Text Length " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠåĪ¤æĸŃ è¾ĵåħ¥ çļĦ åŃĹç¬¦ä¸² éķ¿åº¦ æĺ¯åĲ¦ è¶ħè¿ĩ æľĢå¤§ éķ¿åº¦ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Binding . tv Input Length . setTextColor ( if Ġ( input Length Ġ< Ġmin Input Text Length Ġ|| Ġis Overflow ) Ġoverflow Color Ġelse Ġnormal Color ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġreset Topic () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Binding . tv Choose Fish P ond . text Ġ= Ġ" éĢīæĭ© é±¼ å¡ ĺ " ĊĠĠĠĠĠĠĠ Ġval Ġtv Choose Fish P ond Desc Ġ= Ġm Binding . tv Choose Fish P ond Desc ĊĠĠĠĠĠĠĠ Ġtv Choose Fish P ond Desc . text Ġ= Ġ" æĶ¾ åĪ° åĲĪ éĢĤ çļĦ é±¼ å¡ ĺ ä¼ļ è¢« æĽ´å¤ļ çļĦ æĳ ¸ é±¼ äºº çľĭ è§ģ åĵ Ł ~ " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Right Click ( view : ĠView ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ æł¡éªĮ åĨħå®¹ æĺ¯åĲ¦ åĲĪ æ³ķ ï¼Į åıĳå¸ĥ ä¿¡æģ¯ ĊĠĠĠĠĠĠĠ Ġval Ġinput Length Ġ= Ġm Binding . et Input Content . length () ĊĠĠĠĠĠĠĠ Ġval Ġtext Length Is Ok Ġ= Ġinput Length Ġin Ġ 5 .. 5 1 2 ĊĠĠĠĠĠĠĠ Ġtake If Ġ{ Ġtext Length Is Ok . not () Ġ} ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsimple Toast (" è¯·è¾ĵåħ¥ [ 5 , Ġ 5 1 2 ) ä¸ª åŃĹç¬¦ ~ ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġæ ĳ ¸ é±¼ åĨħå®¹ ĊĠĠĠĠĠĠĠ Ġval Ġcontent Ġ= Ġm Binding . et Input Content . text String ĊĠĠĠĠĠĠĠ Ġval Ġimages Ġ= Ġarray ListOf < String >() ĊĠĠĠĠĠĠĠ Ġimages . addAll ( m Preview Adapter . getData ()) ĊĠĠĠĠĠĠĠ Ġshow Dialog () ĊĠĠĠĠĠĠĠ Ġ// Ġ ä¸Ĭä¼ł åĽ¾çīĩ ï¼Į æŃ¤ å¤Ħ çļĦ Ġpath Ġä¸º å®¢æĪ·ç«¯ æľ¬åľ° çļĦ è·¯å¾Ħ ï¼Į éľĢè¦ģ ä¸Ĭä¼ł åĪ° æľįåĬ¡åĻ¨ ä¸Ĭ ï¼Į èİ·åıĸ ç½ĳç»ľ Ġurl Ġ è·¯å¾Ħ ĊĠĠĠĠĠĠĠ Ġlifecycle Scope . launch When Created Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsuccess Images Ġ= Ġarray ListOf < String >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimages . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠimageUrl Ġ= Ġwith Context ( Dispatch ers . Default ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRepository . upload Fish Image ( File ( it )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ çĽ´æİ¥ Ġreturn Ġ åıªæľī Ġcontinue ĠçļĦ æķĪæŀľ ï¼Į æŃ¤ å¤Ħ éľĢè¦ģ ä½¿çĶ¨ Ġlambda Ġ è¿Ľè¡Į Ġreturn Ġï¼Ī çĽ¸ å½ĵ äºİ Ġbreak ï¼ī ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: Ġreturn @ run ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuccess Images . add ( imageUrl ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" == => ĠimageUrl Ġis Ġ$ imageUrl ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" == => Ġsuccess Images Ġis Ġ$ success Images ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( success Images . size Ġ!= Ġimages . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsimple Toast (" åĽ¾çīĩ ä¸Ĭä¼ł å¤±è´¥ ï¼Į è¯· ç¨ į åĲİ éĩį è¯ķ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhide Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ launch When Created ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 2 0 2 1 / 9 / 1 2 Ġ å¡« åħħ ĠâĢľ éĵ¾æİ¥ âĢĿ ï¼Ī å®¢æĪ·ç«¯ æļĤ ä¸į æĶ¯æĮģ ï¼īï¼Į ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmap Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" content " Ġto Ġcontent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" topic Id " Ġto Ġm Topic Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" link Url " Ġto Ġm Link Url , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" images " Ġto Ġsuccess Images , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ åĽ¾çīĩ ä¸Ĭä¼ł å®ĮæĪĲ ï¼Į åı¯ä»¥ åıĳå¸ĥ æĳ ¸ é±¼ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Fish P ond ViewModel . put Fish ( map ). observe ( this @ Put Fish Activity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhide Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . getOrElse Ġ{ Ġthrowable Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsimple Toast (" åıĳå¸ĥ å¤±è´¥ ðŁĺ Ń Ġ$ throwable ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ observe ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ éĩį ç½® çķĮéĿ¢ çĬ¶æĢģ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Topic Id Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Link Url Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Preview Adapter . setData ( array ListOf ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Binding . et Input Content . clear Text () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreset Topic () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsimple Toast (" åıĳå¸ĥ éĿŀå¸¸ æĪĲåĬŁ ðŁĺ ĥ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Result ( Activity . RESULT _ OK ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Selected ( data : ĠMutable List < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Preview Adapter . setData ( data . to Mutable List ()) ĊĠĠĠĠĠĠĠ ĠTim ber . d (" == => Ġimages Ġpath Ġis Ġ$ data ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠĠĠĠĠ Ġhide Keyboard () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġclass ĠImage Preview Adapter ( private Ġval Ġm Data : ĠMutable List < String > Ġ= Ġarray ListOf ()) Ġ: ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRecyclerView . Adapter < Image Preview ViewHolder >() Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġvar Ġpreview Image Listener : Ġ( view : ĠView , Ġposition : ĠInt ) Ġ-> ĠUnit Ġ= Ġ{ Ġ_, Ġ_ Ġ-> Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġvar Ġclear Image Listener : Ġ( view : ĠView , Ġposition : ĠInt ) Ġ-> ĠUnit Ġ= Ġ{ Ġ_, Ġ_ Ġ-> Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress Lint (" Notify DataSet Changed ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠsetData ( data : ĠMutable List < String >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Data . clear () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Data . addAll ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠgetData () Ġ= Ġm Data . toList () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġset On ItemClickListener ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpreview Image : Ġ( view : ĠView , Ġposition : ĠInt ) Ġ-> ĠUnit , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclear Image : Ġ( view : ĠView , Ġposition : ĠInt ) Ġ-> ĠUnit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpreview Image Listener Ġ= Ġpreview Image ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclear Image Listener Ġ= Ġclear Image ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent : ĠViewGroup , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Type : ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ): ĠImage Preview ViewHolder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinflater Ġ= ĠLayoutInflater . from ( parent . context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= ĠImage Choose Item Binding . inflate ( in flater , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠImage Preview ViewHolder ( binding ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠImage Preview ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġm Data [ position ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġiv Photo Ġ= Ġholder . binding . iv Photo ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġiv Clear Ġ= Ġholder . binding . iv Clear ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( holder . item View ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( item ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( iv Photo ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( holder . item View ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( R . drawable . clear _ ic ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( iv Clear ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġiv Photo . set Fix OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpreview Image Listener . invoke ( it , Ġposition ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġiv Clear . set Fix OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Data . remove At ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Item Removed ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclear Image Listener . invoke ( it , Ġposition ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ= Ġm Data . size ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġclass ĠImage Preview ViewHolder ( val Ġbinding : ĠImage Choose Item Binding ) Ġ: ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRecyclerView . ViewHolder ( binding . root ) ĊĠĠĠ Ġ} Ċ }