package Ġcom . simple city apps . k tag lib . sample Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ class ĠDocument Adapter Ġ: ĠRecyclerView . Adapter < ViewHolder >() Ġ{ ĊĊĠĠĠ Ġval Ġdata : ĠMutable List < Pair < Document , ĠAudio File ? >> Ġ= Ġmutable ListOf () ĊĊĠĠĠ Ġfun Ġclear () Ġ{ ĊĠĠĠĠĠĠĠ Ġdata . clear () ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Item ( item : ĠPair < Document , ĠAudio File ?> ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdata . add ( item ) ĊĠĠĠĠĠĠĠ Ġnotify Item Inserted ( data . size Ġ- Ġ 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠViewHolder ( LayoutInflater . from ( parent . context ). inflate ( R . layout . list _ item _ document , Ġparent , Ġfalse )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdata . size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġ( document , Ġaudio File ) Ġ= Ġdata [ position ] ĊĊĠĠĠĠĠĠĠ ĠG lide App . with ( holder . album Art ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( audio File ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( holder . album Art ) ĊĊĠĠĠĠĠĠĠ Ġholder . mime Type TextView . text Ġ= Ġdocument . mime Type ĊĠĠĠĠĠĠĠ Ġif Ġ( audio File Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . document Name TextView . text Ġ= Ġdocument . displayName ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . title TextView . text Ġ= Ġaudio File . title ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . track TextView . text Ġ= Ġaudio File . track . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . duration TextView . text Ġ= Ġaudio File . duration ?. to H ms () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . artist TextView . text Ġ= Ġaudio File . artist ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . album Artist TextView . text Ġ= Ġaudio File . album Artist ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . album TextView . text Ġ= Ġaudio File . album ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . year TextView . text Ġ= Ġaudio File . date ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . disc TextView . text Ġ= Ġaudio File . disc . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . size TextView . text Ġ= Ġ"${ "% . 2 f ". format ( audio File . size Ġ/ Ġ 1 0 2 4 f Ġ/ Ġ 1 0 2 4 f )} MB " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠViewHolder ( item View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( item View ) Ġ{ ĊĠĠĠ Ġval Ġalbum Art : ĠImageView Ġ= ĠitemView . findViewById ( R . id . album Art ) ĊĠĠĠ Ġval Ġdocument Name TextView : ĠTextView Ġ= ĠitemView . findViewById ( R . id . document Name ) ĊĠĠĠ Ġval Ġtitle TextView : ĠTextView Ġ= ĠitemView . findViewById ( R . id . title ) ĊĠĠĠ Ġval Ġtrack TextView : ĠTextView Ġ= ĠitemView . findViewById ( R . id . track ) ĊĠĠĠ Ġval Ġduration TextView : ĠTextView Ġ= ĠitemView . findViewById ( R . id . duration ) ĊĠĠĠ Ġval Ġartist TextView : ĠTextView Ġ= ĠitemView . findViewById ( R . id . artist ) ĊĠĠĠ Ġval Ġalbum Artist TextView : ĠTextView Ġ= ĠitemView . findViewById ( R . id . album Artist ) ĊĠĠĠ Ġval Ġalbum TextView : ĠTextView Ġ= ĠitemView . findViewById ( R . id . album ) ĊĠĠĠ Ġval Ġyear TextView : ĠTextView Ġ= ĠitemView . findViewById ( R . id . year ) ĊĠĠĠ Ġval Ġdisc TextView : ĠTextView Ġ= ĠitemView . findViewById ( R . id . disc ) ĊĠĠĠ Ġval ĠmimeType TextView : ĠTextView Ġ= ĠitemView . findViewById ( R . id . mime Type ) ĊĠĠĠ Ġval Ġsize TextView : ĠTextView Ġ= ĠitemView . findViewById ( R . id . size ) Ċ } Ċ Ċ /** Ċ Ġ* Ġ@ param ĠdefaultValue Ġreturned Ġif Ġspecified , Ġand Ġthe Ġduration Ġbeing Ġconverted Ġis Ġ 0 Ġseconds . Ċ Ġ*/ Ċ fun ĠInt . to H ms ( defaultValue : ĠString ? Ġ= Ġnull ): ĠString Ġ{ ĊĊĠĠĠ Ġif Ġ( this Ġ== Ġ 0 Ġ&& ĠdefaultValue Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠdefaultValue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġhours Ġ= ĠTimeUnit . MILLISECONDS . to Hours ( this . to Long ()) ĊĠĠĠ Ġval Ġminutes Ġ= ĠTimeUnit . MILLISECONDS . to Minutes ( this . to Long ()) Ġ% ĠTimeUnit . HOUR S . to Minutes ( 1 ) ĊĠĠĠ Ġval Ġseconds Ġ= ĠTimeUnit . MILLISECONDS . to Seconds ( this . to Long ()) Ġ% ĠTimeUnit . MIN UTES . to Seconds ( 1 ) ĊĊĠĠĠ Ġreturn Ġif Ġ( hours Ġ== Ġ 0 L ) Ġ{ ĊĠĠĠĠĠĠĠ ĠString . format ("% 2 d :% 0 2 d ", Ġminutes , Ġseconds ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ ĠString . format ("% 2 d :% 0 2 d :% 0 2 d ", Ġhours , Ġminutes , Ġseconds ) ĊĠĠĠ Ġ} Ċ }