package Ġnet . t nose . app . tris quel Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . net . Uri Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . annotation . Color Int Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġcom . bump tech . glide . request . RequestOptions Ċ import Ġcom . github . ch u ross . recyclerview adapters . Item Adapter Ċ import Ġkotlinx . android . synt hetic . main . fav _ photo _ item . view .* Ċ import Ġjava . io . File Ċ Ċ class ĠF av Photo Local Adapter ( context : ĠContext , Ġ@ Color Int Ġval ĠtextColor : ĠInt ? Ġ= Ġnull ) Ġ: ĠItem Adapter < Photo , ĠF av Photo Local Adapter . ViewHolder >( context ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġget Adapter Id (): ĠInt Ġ= ĠR . layout . fav _ photo _ item ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠF av Photo Local Adapter . ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinflater Ġ= ĠLayoutInflater . from ( context ) ĊĠĠĠĠĠĠĠ Ġreturn ĠViewHolder ( in flater . inflate ( adapter Id , Ġparent , Ġfalse )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġphoto Ġ= Ġget ( position ) ĊĊĠĠĠĠĠĠĠ Ġif ( photo . supp lement al Images . size Ġ== Ġ 0 ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . mF ocal Length View . text Ġ= Ġ"% . 0 f mm ". format ( photo . focal Length ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . mA perture View . text Ġ= Ġ" F % s ". format ( photo . ap ert ure . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . mF ocal Length View . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . mA perture View . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( photo . sh utter Speed Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Sh utter Speed View . text Ġ= ĠUtil . double ToString Sh utter Speed ( photo . sh utter Speed ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Sh utter Speed View . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Sh utter Speed View . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( holder . m ImageView . context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( R . drawable . general _ image _ gray ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( holder . m ImageView ) ĊĠĠĠĠĠĠĠ Ġ} else Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . mF ocal Length View . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . mA perture View . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Sh utter Speed View . visibility Ġ= ĠView . IN VISIBLE ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpath Ġ= Ġphoto . supp lement al Images [ 0 ] ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrb Ġ= Ġif ( path . startsWith ("/ ")){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( holder . m ImageView . context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( File ( path )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( holder . m ImageView . context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( Uri . parse ( path )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrb . apply ( RequestOptions () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. placeholder ( R . drawable . general _ image _ gray ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. center Crop () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. error ( R . drawable . ic _ error _ circle ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). into ( holder . m ImageView ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m ImageView . add On Layout ChangeListener Ġ{ Ġv , Ġleft , Ġtop , Ġright , Ġbottom , Ġold Left , Ġold Top , Ġold Right , Ġold Bottom Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġå¤§ ãģį ãģķ ãģĮ ç¢º å®ļ ãģĹãģ¦ ãģĭãĤī æıı çĶ» ãģĹãģªãģĦ ãģ¨ ãģĦ ãģĳ ãģªãģĦ ãĢĤ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġå½ĵ åĪĿ ãģ¯ onCreate ãģ§ è¿½åĬł ãģķãĤĮãģŁ Custom ImageView ãģ« path ãģĮ è¨Ńå®ļ ãģķãĤĮãģŁ ç ŀ ¬ éĸĵ ãģ« æıı çĶ» ãģĹãģ¦ãģĦ ãģŁ ãģĮ ãĢģ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ ãģĿãĤĮ ãģł ãģ¨ å¦ Ļ ãģ« å°ı ãģķ ãģı ãģªãĤĭ ãĢĤ ãģª ãģĬ ãģĵãģ® åįĬ ç«¯ ãģª å®Ł è£ħ ãģ¯ git ãģ® å± ¥ æŃ ´ ãģ«ãģ¯ æ® ĭ ãģĹãģ¦ãģĦ ãģªãģĦ ãĢĤ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( path . isNotEmpty () Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġold Bottom Ġ- Ġold Top Ġ!= Ġbottom Ġ- Ġtop Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġold Right Ġ- Ġold Left Ġ!= Ġright Ġ- Ġleft ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrb Ġ= Ġif ( path . startsWith ("/ ")){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( holder . m ImageView . context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( File ( path )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( holder . m ImageView . context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( Uri . parse ( path )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrb . apply ( RequestOptions () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. placeholder ( R . drawable . general _ image _ gray ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. center Crop () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. error ( R . drawable . ic _ error _ circle ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( holder . m ImageView ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠViewHolder ( val Ġm View : ĠView ) Ġ: Ġandroidx . recyclerview . widget . RecyclerView . ViewHolder ( m View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġm F ocal Length View : ĠTextView Ġ= Ġm View . f oc all ength ĊĠĠĠĠĠĠĠ Ġval Ġm A perture View : ĠTextView Ġ= Ġm View . ap ert ure ĊĠĠĠĠĠĠĠ Ġval Ġm Sh utter Speed View : ĠTextView Ġ= Ġm View . sh utter speed ĊĠĠĠĠĠĠĠ Ġval Ġm ImageView : ĠImageView Ġ= Ġm View . photo ĊĊĠĠĠ Ġ} Ċ }