/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 2 0 ĠTr inity . ĠAll Ġrights Ġreserved . Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 2 0 ĠWang ĠL ian J ie Ġ< w lan j ie 8 8 8 @ gmail . com > Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . tr inity . sample . adapter Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . ImageView Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . google . gson . Gson Ċ import Ġcom . google . gson . reflect . Type Token Ċ import Ġcom . tr inity . sample . R Ċ import Ġcom . tr inity . sample . entity . Effect Ċ import Ġjava . nio . charset . Charset Ċ Ċ class ĠIdent ify Adapter ( ĊĠ Ġcontext : ĠContext , ĊĠ Ġval Ġcallback : Ġ( effect : ĠEffect ?) Ġ-> ĠUnit ) Ġ: ĠRecyclerView . Adapter < Ident ify Adapter . ViewHolder >() Ġ{ ĊĊĠ Ġprivate Ġval Ġm Effects : ĠList < Effect > ĊĠ Ġprivate Ġvar ĠmCurrent Position Ġ= Ġ- 1 ĊĊĠ Ġinit Ġ{ ĊĠĠĠ Ġval Ġstream Ġ= Ġcontext . assets . open (" identify . json ") ĊĠĠĠ Ġval Ġsize Ġ= Ġstream . available () ĊĠĠĠ Ġval Ġbuffer Ġ= ĠByteArray ( size ) ĊĠĠĠ Ġstream . read ( buffer ) ĊĠĠĠ Ġstream . close () ĊĠĠĠ Ġm Effects Ġ= ĠGson (). fromJson ( String ( buffer , ĠCharset . forName (" UTF - 8 ")), Ġobject : ĠType Token < List < Effect >>() {}. type ) ĊĠ Ġ} ĊĊĠ Ġclass ĠViewHolder ( item View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( item View ) Ġ{ ĊĠĠĠ Ġval Ġselect State Image : ĠImageView Ġ= ĠitemView . findViewById ( R . id . select _ state ) ĊĠĠĠ Ġval Ġresource Image : ĠImageView Ġ= ĠitemView . findViewById ( R . id . resource _ image _ view ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠViewHolder Ġ{ ĊĠĠĠ Ġval Ġview Ġ= ĠLayoutInflater . from ( parent . context ). inflate ( R . layout . resource _ item _ view , Ġparent , Ġfalse ) ĊĠĠĠ Ġreturn ĠViewHolder ( view ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġm Effects . size ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠ Ġif Ġ( position Ġ!= ĠmCurrent Position ) Ġ{ ĊĠĠĠĠĠ Ġholder . select State Image . visibility Ġ= ĠView . GONE ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġholder . select State Image . visibility Ġ= ĠView . VISIBLE ĊĠĠĠ Ġ} ĊĠĠĠ Ġholder . item View . setOnClickListener Ġ{ ĊĠĠĠĠĠ ĠmCurrent Position Ġ= Ġif Ġ( position Ġ== ĠmCurrent Position ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcallback ( null ) ĊĠĠĠĠĠĠĠ Ġ- 1 ĊĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġcallback ( m Effects [ position ]) ĊĠĠĠĠĠĠĠ Ġposition ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ }