package Ġcom . cz l . module _ project . adapter Ċ Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Sparse Array Ċ import Ġandroidx . recyclerview . widget . Diff Util Ċ import Ġcom . blank j . util code . util . Screen Utils Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġcom . bump tech . glide . request . RequestOptions Ċ import Ġcom . bump tech . glide . request . target . ImageView Target Ċ import Ġcom . ch ad . library . adapter . base . Base Quick Adapter Ċ import Ġcom . ch ad . library . adapter . base . view holder . Base Data Binding Holder Ċ import Ġcom . cz l . lib _ base . binding . command . Binding Command Ċ import Ġcom . cz l . lib _ base . binding . command . Binding Consumer Ċ import Ġcom . cz l . lib _ base . config . App Constants Ċ import Ġcom . cz l . lib _ base . data . bean . Project Bean Ċ import Ġcom . cz l . module _ project . R Ċ import Ġcom . cz l . module _ project . databinding . Project Item Grid Binding Ċ import Ġcom . cz l . module _ project . ui . fragment . Content Fragment ĊĊ Ċ /** Ċ Ġ* Ġ@ author ĠAl w yn Ċ Ġ* Ġ@ Date Ġ 2 0 2 0 / 1 1 / 1 1 Ċ Ġ* Ġ@ Description Ġ ç Ģ ĳ å¸ĥ æµģ éĢĤ éħį åĻ¨ Ċ Ġ*/ Ċ class ĠProject Item Grid Adapter ( private Ġval Ġcontent Fragment : ĠContent Fragment ) Ġ: ĊĠĠĠ ĠBase Quick Adapter < Project Bean . Data , ĠBase Data Binding Holder < Project Item Grid Binding >>( R . layout . project _ item _ grid ) Ġ{ ĊĊĠĠĠ Ġ// Ġ åŃĺåĤ¨ åĽ¾çīĩ çļĦ é«ĺåº¦ ĊĠĠĠ Ġprivate Ġval Ġsize Sparse Array : ĠSparse Array < Int ?> Ġ= ĠSparse Array () ĊĊĠĠĠ Ġoverride Ġfun Ġconvert ( ĊĠĠĠĠĠĠĠ Ġholder : ĠBase Data Binding Holder < Project Item Grid Binding >, ĊĠĠĠĠĠĠĠ Ġitem : ĠProject Bean . Data ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġholder . data Binding ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv Title . text Ġ= Ġitem . title ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġthis @ Project Item Grid Adapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . item Ġ= Ġitem ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġè®¾ç½® åĽ¾çīĩ å®½ é«ĺ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlayout Params Ġ= Ġiv Project Item . layout Params ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscreen Width Ġ= ĠScreen Utils . getApp Screen Width () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm Width Ġ= Ġscreen Width Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Params . width Ġ= Ġm Width ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( size Sparse Array . get ( getItem Position ( item )) Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm Height Ġ= Ġsize Sparse Array . get ( getItem Position ( item )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Params . height Ġ= Ġm Height !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġiv Project Item . layout Params Ġ= Ġlayout Params ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ åĬłè½½ åĽ¾çīĩ éħįç½® ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoptions : ĠRequest Options Ġ= ĠRequest Options () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. skip Memory Cache ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. dont Animate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. dont Transform () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. placeholder ( R . drawable . ic _ placeholder ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. error ( R . drawable . default _ project _ img ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Bitmap () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply ( options ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( item . envelope Pic ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( object Ġ: ImageView Target < Bitmap >( iv Project Item ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġset Resource ( resource : ĠBitmap ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresource ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . setImage Bitmap ( resource ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// èİ·åıĸ åİŁ åĽ¾ çļĦ å®½ é«ĺ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwidth Ġ= Ġresource . width ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġheight Ġ= Ġresource . height ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// èİ·åıĸ imageView çļĦ å®½ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠimageView Width Ġ= Ġiv Project Item . width ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// è®¡ç®Ĺ ç¼© æĶ¾ æ¯Ķ ä¾ĭ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsy Ġ= Ġ( imageView Width Ġ* Ġ 0 . 1 ). toFloat () Ġ/ Ġ( width Ġ* Ġ 0 . 1 ). toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// è®¡ç®Ĺ åĽ¾çīĩ çŃī æ¯Ķ ä¾ĭ æĶ¾ å¤§ åĲİçļĦ é«ĺ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠimageView Height Ġ= Ġ( height Ġ* Ġsy ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparams Ġ= Ġiv Project Item . layout Params ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams . height Ġ= ĠimageView Height ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġiv Project Item . layout Params Ġ= Ġparams ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Position Ġ= ĠgetItem Position ( item ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( size Sparse Array . get ( item Position )== null ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize Sparse Array . put ( item Position , imageView Height ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexecute Pending Bindings () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġon Item Click Command : ĠBinding Command < Any ?> Ġ= ĠBinding Command ( Binding Consumer Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( it Ġis ĠProject Bean . Data ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Fragment . start Container Activity ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp Constants . Router . Web . F _ WEB , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBundle (). apply Ġ{ Ġput String ( App Constants . Bundle Key . WEB _ URL , Ġit . link ) Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) ĊĊĠĠĠ Ġval Ġdiff Config Ġ= Ġobject Ġ: ĠDiff Util . Item Callback < Project Bean . Data >() Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Items The Same ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġold Item : ĠProject Bean . Data , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Item : ĠProject Bean . Data ĊĠĠĠĠĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġold Item . id Ġ== Ġnew Item . id ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Contents The Same ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġold Item : ĠProject Bean . Data , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Item : ĠProject Bean . Data ĊĠĠĠĠĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġold Item Ġ== Ġnew Item ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }