package Ġcom . ces ars ch ool . storage Ċ Ċ 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 Ġkotlinx . android . synt hetic . main . item . view .* Ċ import Ġjava . io . File Ċ import Ġjava . io . IOException Ċ Ċ class ĠRe cycler Viewer Adapter ( private Ġval Ġlistener : ĠOn ItemClickListener ) Ċ ĉ : ĠRecyclerView . Adapter < Recycler Viewer Adapter . ViewHolder >() Ġ{ ĊĊ ĉ interface ĠOn ItemClickListener Ġ{ Ċĉ ĉ fun Ġon Item Click ( position : ĠInt ) Ċ ĉ } ĊĊ ĉ private Ġvar Ġlist : ĠArrayList < File Data >? Ġ= ĠArrayList () ĊĊ ĉ inner Ġclass ĠViewHolder ( item View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( item View ), ĠView . OnClickListener Ġ{ Ċĉ ĉ val ĠtextView FileName : ĠTextView Ġ= ĠitemView . textView FileName Ċĉ ĉ val ĠtextView File Storage Type : ĠTextView Ġ= ĠitemView . textView File Storage Type Ċĉ ĉ val ĠtextView File Encryption : ĠTextView Ġ= ĠitemView . textView File Encryption Ċĉ ĉ val ĠimageView Remove : ĠImageView Ġ= ĠitemView . imageView Remove ĊĊĉ ĉ init Ġ{ Ċĉĉ ĉ item View . setOnClickListener ( this ) Ċĉ ĉ } ĊĊĉ ĉ override Ġfun ĠonClick ( v : ĠView ?) Ġ{ Ċĉĉ ĉ val Ġposition Ġ= Ġadapter Position Ċĉĉ ĉ if Ġ( position Ġ!= ĠRecyclerView . NO _ POSITION ) Ġ{ Ċĉĉĉ ĉ listener . on Item Click ( position ) Ċĉĉ ĉ } Ċĉ ĉ } Ċ ĉ } ĊĊ ĉ fun ĠsetData ( data : ĠArrayList < File Data >) Ġ{ Ċĉ ĉ this . list Ġ= Ġdata Ċ ĉ } ĊĊ ĉ private Ġfun Ġremove Item ( view : ĠView ?, Ġfile Data : ĠFile Data ) Ġ{ Ċĉ ĉ val Ġindex Ġ= Ġthis . list ?. indexOf ( file Data ) Ċĉ ĉ this . list ?. remove If Ġ{ Ġobj Ġ-> Ġobj . uuid Ġ== Ġfile Data . uuid Ġ} Ċĉ ĉ if Ġ( index Ġ!= Ġnull ) Ġ{ Ċĉĉ ĉ this . notify Item Removed ( index ) Ċĉ ĉ } Ċ ĉ } ĊĊ ĉ fun Ġinsert Item ( view : ĠView ?, Ġnew Item : ĠFile Data ) Ġ{ Ċĉ ĉ this . list ?. add ( 0 , Ġnew Item ) Ċĉ ĉ this . notify Item Inserted ( 0 ) Ċ ĉ } ĊĊ ĉ override Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠViewHolder Ġ{ Ċĉ ĉ val ĠitemView Ġ= ĠLayoutInflater . from ( parent . context ). inflate ( Ċĉĉ ĉ R . layout . item , Ċĉĉ ĉ parent , Ċĉĉ ĉ false , Ċĉ ĉ ) ĊĊĉ ĉ return ĠViewHolder ( item View ) Ċ ĉ } ĊĊ ĉ override Ġfun Ġon Bind ViewHolder ( holder : ĠViewHolder , Ġposition : ĠInt ) Ġ{ Ċĉ ĉ val Ġcurrent Item Ġ= Ġlist ?. get ( position ) !! Ċĉ ĉ holder . textView FileName . text Ġ= Ġcurrent Item . name Ċĉ ĉ holder . textView File Storage Type . text Ġ= Ġcurrent Item . storage Ċĉ ĉ holder . textView File Encryption . text Ġ= Ġcurrent Item . encryption Ċĉ ĉ holder . imageView Remove . setOnClickListener Ġ{ Ċĉĉ ĉ val Ġfile Data Ġ= Ġthis . list ! ![ position ] Ċĉĉ ĉ try Ġ{ Ċĉĉĉ ĉ var Ġfile : ĠFile ? Ġ= Ġnull Ċĉĉĉ ĉ if Ġ( file Data . storage Ġ== ĠFile Data . FILE _ DATA _ INTERNAL _ STORAGE ) Ġ{ Ċĉĉĉĉ ĉ file Ġ= ĠFile ( holder . item View . context . files Dir , Ġfile Data . name ) Ċĉĉĉ ĉ } Ċĉĉĉ ĉ if Ġ( file Data . storage Ġ== ĠFile Data . FILE _ DATA _ EXTERNAL _ STORAGE ) Ġ{ Ċĉĉĉĉ ĉ file Ġ= ĠFile ( holder . item View . context . get External Files Dir ( null ), Ġfile Data . name ) Ċĉĉĉ ĉ } Ċĉĉĉ ĉ if Ġ( file ?. exists () Ġ== Ġtrue ) Ġ{ Ċĉĉĉĉ ĉ file . delete () Ċĉĉĉ ĉ } Ċĉĉ ĉ } Ġcatch Ġ( e : ĠIOException ) Ġ{ Ċĉĉĉ ĉ e . printStackTrace () Ċĉĉ ĉ } Ċĉĉ ĉ removeItem ( holder . item View , Ġfile Data ) Ċĉ ĉ } Ċ ĉ } ĊĊ ĉ override Ġfun ĠgetItem Count (): ĠInt Ġ= Ġlist ?. size !! Ċ } ĊĊ