package Ġcom . ang cy o . dsl item Ċ Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . ang cy o . dsl adapter .* Ċ import Ġcom . ang cy o . dsl adapter . data . update Single Data Ċ import Ġcom . ang cy o . dsl adapter . filter . Add Media Filter After Interceptor Ċ import Ġcom . ang cy o . glide . item . Dsl Image Item Ċ import Ġcom . ang cy o . item . Dsl Base Label Item Ċ import Ġcom . ang cy o . library . L Ċ import Ġcom . ang cy o . library . ex . dpi Ċ import Ġcom . ang cy o . library . ex . else Null Ċ import Ġcom . ang cy o . library . model . Loader Media Ċ import Ġcom . ang cy o . library . model . load Uri Ċ import Ġcom . ang cy o . library . model . mime Type Ċ import Ġcom . ang cy o . loader . Loader Config Ċ import Ġcom . ang cy o . pager . dsl Pager Ċ import Ġcom . ang cy o . picker . R Ċ import Ġcom . ang cy o . widget . Dsl ViewHolder Ċ import Ġcom . ang cy o . widget . recycler . clear Item Decoration Ċ import Ġcom . ang cy o . widget . recycler . init Dsl Ċ import Ġcom . ang cy o . widget . recycler . no Item Change Anim Ċ import Ġcom . ang cy o . widget . recycler . reset LayoutManager Ċ Ċ /** Ċ Ġ* Ġ å¸¦ label , Ġ åªĴ ä½ĵ åĪĹè¡¨ å±ķç¤º çļĦ item Ċ Ġ* ĠEmail : ang cy o @ 1 2 6 . com Ċ Ġ* Ġ@ author Ġang cy o Ċ Ġ* Ġ@ date Ġ 2 0 2 0 / 0 3 / 2 5 Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 9 ĠSh en Z hen ĠO & M ĠCloud ĠCo ., ĠLtd . ĠAll Ġrights Ġreserved . Ċ Ġ*/ Ċ open Ġclass ĠD sl Label Media Item Ġ: ĠD sl Base Label Item () Ġ{ ĊĊĠĠĠ Ġ/** åĨħéĥ¨ adapter */ ĊĠĠĠ Ġvar Ġitem Media Adapter : ĠD sl Adapter Ġ= ĠD sl Adapter () ĊĊĠĠĠ Ġ/** æľĢå¤§ æĺ¾ç¤º åªĴ ä½ĵ æķ° */ ĊĠĠĠ Ġvar Ġitem Show Max Media Count : ĠInt Ġ= Ġ 9 ĊĊĠĠĠ Ġ/** æ·»åĬł åªĴ ä½ĵ è¿ĩæ»¤ æĮīéĴ® */ ĊĠĠĠ Ġvar Ġadd Media Filter After Interceptor Ġ= ĠAdd Media Filter After Interceptor () ĊĊĠĠĠ Ġ/** æ·»åĬł åªĴ ä½ĵ , Ġ åĬł åı· éĢ»è¾ĳ */ ĊĠĠĠ Ġvar Ġadd Media Item : ĠD sl Add Media Item ? Ġ= ĠD sl Add Media Item (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġmargin ( 1 Ġ* Ġdpi ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** åªĴ ä½ĵ Loader éħįç½® */ ĊĠĠĠ Ġvar Ġitem Update Loader Config : Ġ( Loader Config ) Ġ-> ĠUnit Ġ= Ġ{} ĊĊĠĠĠ Ġ/** éľĢè¦ģ æĺ¾ç¤º çļĦ åªĴ ä½ĵ åĪĹè¡¨ */ ĊĠĠĠ Ġvar Ġitem Media List Ġ= Ġmutable ListOf < Loader Media >() ĊĊĠĠĠ Ġ/** çĶ¨äºİ é¢Ħ è§Ī å¤§ åĽ¾ */ ĊĠĠĠ Ġvar Ġitem Fragment : ĠFragment ? Ġ= Ġnull ĊĊĠĠĠ Ġ/** æĺ¯åĲ¦ è¦ģ æĺ¾ç¤º åĬł åı· */ ĊĠĠĠ Ġvar Ġitem Show Add Media Item : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠ Ġ/** ç½ĳ æł¼ åĪĹ æķ° */ ĊĠĠĠ Ġvar Ġitem Grid Span Count Ġ= Ġ 3 ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġitem Layout Id Ġ= ĠR . layout . dsl _ label _ media _ item ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Item Bind ( ĊĠĠĠĠĠĠĠ Ġitem Holder : ĠD sl ViewHolder , ĊĠĠĠĠĠĠĠ Ġitem Position : ĠInt , ĊĠĠĠĠĠĠĠ Ġadapter Item : ĠD sl Adapter Item , ĊĠĠĠĠĠĠĠ Ġpayload s : ĠList < Any > ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Item Bind ( item Holder , Ġitem Position , Ġadapter Item , Ġpayload s ) ĊĊĠĠĠĠĠĠĠ Ġcheck Empty ( item Holder ) ĊĊĠĠĠĠĠĠĠ Ġitem Holder . rv ( R . id . lib _ recycler _ view )?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġre cyclerView Ġ= Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclear On Scroll Listeners () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclear Item Decoration () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġno Item Change Anim () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Dsl () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreset LayoutManager (" GV $ item Grid Span Count ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// åħ³éĶ® åľ°æĸ¹ , Ġå¦Ĥæŀľ æ¯ıæ¬¡ éĥ½ èµĭåĢ¼ [ adapter ], Ġ ç³»ç»Ł ä¼ļ éĩį ç½® æīĢæľī ç¼ĵåŃĺ . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( adapter Ġ!= Ġitem Media Adapter ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġitem Media Adapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Media Adapter . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// åħ³éĹŃ é»ĺè®¤ çļĦ çĬ¶æĢģ åĪĩæį¢ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġd sl Adapter Status Item . item Enable Ġ= Ġ! item Show Add Media Item ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// + åı· å¤ĦçĲĨ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġd sl Data Filter ?. data After Interceptor List ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Media Filter After Interceptor . max Media Count Ġ= Ġitem Show Max Media Count ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Media Filter After Interceptor . add Media Dsl Adapter Item Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item Show Add Media Item Ġ&& Ġitem Enable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Media Item ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Fragment Ġ= Ġthis @ Dsl Label Media Item . item Fragment ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Loader Config . max Selector Limit Ġ= Ġitem Show Max Media Count ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Loader Config . selector Media List Ġ= Ġitem Media List ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Update Loader Config Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Dsl Label Media Item . item Update Loader Config ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Take Result Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Media List . add ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġload Media List ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Holder , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Media Adapter , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Media List ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Dsl Label Media Item . item Changing Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Result Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// åªĴ ä½ĵ åĪĹè¡¨ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Media List . clear () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Media List . addAll ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġload Media List ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Holder , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Media Adapter , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Dsl Label Media Item . item Changing Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! contains ( add Media Filter After Interceptor )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( 0 , Ġadd Media Filter After Interceptor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// åªĴ ä½ĵ åĪĹè¡¨ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġload Media List ( item Holder , Ġre cyclerView , Ġthis , Ġitem Media List ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġcheck Empty ( item Holder : ĠD sl ViewHolder ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( item Media List . isEmpty () Ġ&& Ġ! item Show Add Media Item ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Holder . visible ( R . id . lib _ tip _ text _ view ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Holder . g one ( R . id . lib _ recycler _ view ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Holder . visible ( R . id . lib _ recycler _ view ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Holder . g one ( R . id . lib _ tip _ text _ view ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġload Media List ( ĊĠĠĠĠĠĠĠ Ġitem Holder : ĠD sl ViewHolder , ĊĠĠĠĠĠĠĠ Ġre cyclerView : ĠRecyclerView , ĊĠĠĠĠĠĠĠ Ġadapter : ĠD sl Adapter , ĊĠĠĠĠĠĠĠ Ġmedia List : ĠList < Loader Media > ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġadapter . update Single Data < Dsl Image Item >( media List ) Ġ{ Ġdata Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmedia Ġ= Ġdata Ġas ĠLoader Media ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmargin ( 2 Ġ* Ġdpi ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Data Ġ= Ġmedia ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Load Uri Ġ= Ġmedia . load Uri () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem MimeType Ġ= Ġmedia . mime Type () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Media Duration Ġ= Ġmedia . duration ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Show Tip Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Show Delete View Ġ= Ġitem Show Add Media Item ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Delete Click Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Media List . remove ( media ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . change Data Items Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . remove ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Empty ( item Holder ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Dsl Label Media Item . item Changing Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// å¤§ åĽ¾ é¢Ħ è§Ī ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Click Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Fragment ?. dsl Pager Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfrom RecyclerView Ġ= Ġre cyclerView ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartPosition Ġ= Ġitem Index Position () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloader Media List Ġ= Ġitem Media List ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. else Null Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠL . w (" item Fragment Ġis Ġnull , Ġcannot Ġshow Ġpager .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġadapter . update Now () ĊĠĠĠ Ġ} Ċ }