package Ġcom . gre im ul . simple flash card . adapter Ċ Ċ import Ġandroid . animation . Animator Inflater Ċ import Ġandroid . animation . Animator Set Ċ import Ġandroid . animation . Object Animator Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Seek Bar Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . card view . widget . Card View Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . gre im ul . simple flash card . R Ċ import Ġcom . gre im ul . simple flash card . db . Card Ċ import Ġkotlinx . android . synt hetic . main . item _ card . view .* Ċ import Ġkotlinx . android . synt hetic . main . item _ card _ play . view .* Ċ import Ġjava . util .* Ċ Ċ class ĠAdapter Test ( private Ġval Ġseek Bar : ĠSeek Bar ?, Ġprivate Ġval Ġtype : Int ): ĠRecyclerView . Adapter < Adapter Test . ViewHolder >() Ġ{ ĊĊĠĠĠ Ġvar Ġorigin Data : List < Card > Ġ= ĠlistOf () ĊĠĠĠ Ġvar Ġview Data : List < Card > Ġ= ĠlistOf () ĊĠĠĠ Ġvar Ġflip Set : ĠBit Set Ġ= ĠBit Set () ĊĠĠĠ Ġvar Ġis All Flip : Boolean Ġ= Ġfalse ĊĊĠĠĠ Ġclass ĠViewHolder ( v : ĠView , type : Int ): ĠRecyclerView . ViewHolder ( v ){ ĊĠĠĠĠĠĠĠ Ġlateinit Ġvar ĠtextView : ĠTextView ĊĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġcard View : ĠCard View ĊĠĠĠĠĠĠĠ Ġinit { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( type ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 -> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView Ġ= Ġv . text view _ card _ text ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcard View Ġ= Ġv . card view _ card ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 ->{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView Ġ= Ġv . text view _ play _ card _ text ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcard View Ġ= Ġv . card view _ play _ card ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ= Ġview Data . size ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( flip Set [ position ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . textView . text Ġ= Ġview Data [ holder . adapter Position ]. back ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . textView . text Ġ= Ġview Data [ holder . adapter Position ]. front ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġv : View ĊĠĠĠĠĠĠĠ Ġwhen ( type ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 -> Ġv Ġ= ĠLayoutInflater . from ( parent . context ). inflate ( R . layout . item _ card , parent , false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 -> Ġv Ġ= ĠLayoutInflater . from ( parent . context ). inflate ( R . layout . item _ card _ play , parent , false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse -> Ġv = ĠLayoutInflater . from ( parent . context ). inflate ( R . layout . item _ card _ play , parent , false ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval ĠviewHolder Ġ= ĠViewHolder ( v , type ) ĊĊĠĠĠĠĠĠĠ ĠviewHolder . card View . setOnClickListener Ġ{ ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġflip Set [ view Holder . adapter Position ] Ġ= Ġ! flip Set [ view Holder . adapter Position ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( flip Set [ view Holder . adapter Position ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder . textView . text Ġ= Ġview Data [ view Holder . adapter Position ]. back ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder . textView . text Ġ= Ġview Data [ view Holder . adapter Position ]. front ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠviewHolder ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Cards ( card List : List < Card > ){ ĊĠĠĠĠĠĠĠ Ġview Data Ġ= Ġcard List ĊĠĠĠĠĠĠĠ Ġorigin Data Ġ= Ġcard List ĊĠĠĠĠĠĠĠ Ġflip Set Ġ= ĠBit Set ( view Data . size ) ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠĠĠĠĠ Ġif ( seek Bar != null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġseek Bar . max Ġ= Ġview Data . size - 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġflip Card ( position : ĠInt ){ ĊĠĠĠĠĠĠĠ Ġflip Set . flip ( position ) ĊĠĠĠĠĠĠĠ Ġnotify Item Changed ( position ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġflip All Cards (){ ĊĠĠĠĠĠĠĠ Ġis All Flip Ġ= Ġ! is All Flip ĊĠĠĠĠĠĠĠ Ġif ( is All Flip ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġflip Set . set ( 0 , flip Set . size ()- 1 , true ) ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġflip Set . set ( 0 , flip Set . size ()- 1 , false ) ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshuffle Cards (){ ĊĠĠĠĠĠĠĠ Ġval Ġdata Array Ġ= Ġmutable ListOf < Card >() ĊĠĠĠĠĠĠĠ Ġview Data . forEach { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata Array . add ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġvar Ġp iv Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġfor ( i Ġin Ġ 0 Ġuntil Ġview Data . size - 1 ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġrand Ġ= Ġ( piv Ġuntil Ġview Data . size ). random () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata Array [ i ] Ġ= Ġdata Array [ rand ]. also Ġ{ Ġdata Array [ rand ] Ġ= Ġdata Array [ i ] Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġp iv ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġview Data Ġ= Ġdata Array . toList () ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} Ċ }