package Ġcom . example . b vm . ui . book . Adapter Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . icu . text . SimpleDateFormat Ċ import Ġandroid . os . Build Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . TextView Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . annotation . Requires Api Ċ import Ġandroidx . core . view . isVisible Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . lifecycle . ViewModel Providers Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġcom . example . b vm . B VM Application Ċ import Ġcom . example . b vm . B VM Application . Companion . context Ċ import Ġcom . example . b vm . R Ċ import Ġcom . example . b vm . logic . model . Book Ċ import Ġcom . example . b vm . logic . model . Book Mark Ċ import Ġcom . example . b vm . ui . book . Book Info Activity Ċ import Ġcom . example . b vm . ui . book . ViewModel . Book ViewModel Ċ import Ġcom . google . android . material . button . Material Button Ċ import Ġjava . util .* Ċ import Ġkotlin . concurrent . thread Ċ Ċ class ĠBook Adapter ( private Ġval Ġfragment : ĠFragment , Ġprivate Ġval Ġbook List : ĠList < Book >, Ġprivate Ġval Ġmark List : ĠList < Book Mark >) Ġ: ĊĠĠĠ ĠRecyclerView . Adapter < Book Adapter . ViewHolder >() Ġ{ ĊĊĠĠĠ Ġval ĠviewModel Ġby Ġlazy Ġ{ ĠViewModel Providers . of ( fragment ). get ( Book ViewModel :: class . java ) Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠViewHolder ( view : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( view ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbook Title : ĠTextView Ġ= Ġview . findViewById ( R . id . item Title ) ĊĠĠĠĠĠĠĠ Ġval Ġbook Info : ĠTextView Ġ= Ġview . findViewById ( R . id . item Info ) ĊĠĠĠĠĠĠĠ Ġval Ġbook Author : ĠTextView Ġ= Ġview . findViewById ( R . id . author Text ) ĊĠĠĠĠĠĠĠ Ġval Ġbook Image : ĠImageView Ġ= Ġview . findViewById ( R . id . item Image ) ĊĠĠĠĠĠĠĠ Ġval Ġdelete Btn : ĠMaterial Button Ġ= Ġview . findViewById ( R . id . delete Item Btn ) ĊĠĠĠĠĠĠĠ Ġval Ġbook Type Btn 0 : ĠMaterial Button Ġ= Ġview . findViewById ( R . id . type Btn 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġbook Type Btn 1 : ĠMaterial Button Ġ= Ġview . findViewById ( R . id . type Btn 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġbook Type Btn 2 : ĠMaterial Button Ġ= Ġview . findViewById ( R . id . type Btn 2 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Requires Api ( Build . VERSION _ CODES . N ) ĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= ĠLayoutInflater . from ( parent . context ). inflate ( R . layout . list _ item , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġval Ġholder Ġ= ĠViewHolder ( view ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġè®¾ç½® çªĹ ä½ĵ çĤ¹åĩ» äºĭä»¶ ĊĠĠĠĠĠĠĠ Ġholder . item View . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġposition Ġ= Ġholder . adapter Position ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbook Ġ= Ġbook List [ position ] Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" Test Book Id ", Ġbook . book _ id . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( context , ĠBook Info Activity :: class . java ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( Book Info Activity . BOOK _ TITLE , Ġbook . book _ name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( Book Info Activity . BOOK _ INFO , Ġbook . info ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( Book Info Activity . BOOK _ PIC , Ġbook . pic ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( Book Info Activity . BOOK _ AUTHOR , Ġbook . author ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( Book Info Activity . BOOK _ AUTHOR _ INFO , Ġbook . author Info ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( Book Info Activity . BOOK _ ID , Ġbook . book _ id . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( Book Info Activity . BOOK _ LABEL , Ġbook . label ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( Book Info Activity . BOOK _ PUBL ISH _ TIME , Ġbook . publish _ time ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġflags Ġ= ĠIntent . FLAG _ ACTIVITY _ NEW _ TASK Ġ// Ġåľ¨ æĸ°çļĦ task ä¸Ń å¼ĢåĲ¯ activity ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . startActivity ( intent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġholder ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Requires Api ( Build . VERSION _ CODES . N ) ĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbook Ġ= Ġbook List [ position ] ĊĠĠĠĠĠĠĠ Ġholder . book Type Btn 0 . text Ġ= Ġ" æĥ³ è¯» " ĊĠĠĠĠĠĠĠ Ġholder . book Type Btn 1 . text Ġ= Ġ" åľ¨ è¯» " ĊĠĠĠĠĠĠĠ Ġholder . book Type Btn 2 . text Ġ= Ġ" è¯» è¿ĩ " ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġmark List . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( mark List [ i ]. book _ id Ġ== Ġbook . book _ id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( mark List [ i ]. type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġholder . book Type Btn 0 . text Ġ= Ġ" å·² æĥ³ è¯» " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġholder . book Type Btn 1 . text Ġ= Ġ" å·² åľ¨ è¯» " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġholder . book Type Btn 2 . text Ġ= Ġ" å·² è¯» è¿ĩ " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġholder . book Title . text Ġ= Ġbook . book _ name ĊĠĠĠĠĠĠĠ Ġif Ġ( book . info . length Ġ> Ġ 6 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . book Info . text Ġ= Ġbook . info . substring ( 0 , Ġ 6 0 )+ Ġ" ..." ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . book Info . text Ġ= Ġbook . info ĊĠĠĠĠĠĠĠ Ġholder . book Author . text Ġ= Ġbook . author ĊĊĠĠĠĠĠĠĠ ĠG lide . with ( context ). load ( book . pic ). into ( holder . book Image ) ĠĠ Ġ// Ġ åĬłè½½ åĽ¾çīĩ Ċ // ĠĠĠĠĠĠĠ Ġholder . book Image . setImage Resource ( G lide . with ( context ). load ( book . pic ). into ( holder . book Image )) ĊĊĠĠĠĠĠĠĠ Ġval ĠuserId Ġ= ĠB VM Application . USER ?. user _ id Ġ?: Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġ// Ġè®¾ç½® æłĩè®° æĮīéĴ® çĽĳåĲ¬ äºĭä»¶ ĊĠĠĠĠĠĠĠ Ġholder . book Type Btn 0 . setOnClickListener Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġposition Ġ= Ġholder . adapter Position ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbook Ġ= Ġbook List [ position ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdate Ġ= ĠDate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠdateFormat Ġ= ĠSimpleDateFormat (" yyyy - MM - dd ĠHH : mm : ss ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . insert Book Mark ( Book Mark ( userId , Ġbook . book _ id Ġ?: Ġ 0 , Ġ 0 , ĠdateFormat . format ( date ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( holder . book Type Btn 0 . text Ġ== Ġ" å·² æĥ³ è¯» ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . book Type Btn 0 . text Ġ= Ġ" æĥ³ è¯» " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . book Type Btn 0 . text Ġ= Ġ" å·² æĥ³ è¯» " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . book Type Btn 1 . text Ġ= Ġ" åľ¨ è¯» " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . book Type Btn 2 . text Ġ= Ġ" è¯» è¿ĩ " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġholder . book Type Btn 1 . setOnClickListener Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġposition Ġ= Ġholder . adapter Position ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbook Ġ= Ġbook List [ position ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdate Ġ= ĠDate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠdateFormat Ġ= ĠSimpleDateFormat (" yyyy - MM - dd ĠHH : mm : ss ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . insert Book Mark ( Book Mark ( userId , Ġbook . book _ id Ġ?: Ġ 0 , Ġ 1 , ĠdateFormat . format ( date ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . book Type Btn 0 . text Ġ= Ġ" æĥ³ è¯» " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( holder . book Type Btn 1 . text Ġ== Ġ" å·² åľ¨ è¯» ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . book Type Btn 1 . text Ġ= Ġ" åľ¨ è¯» " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . book Type Btn 1 . text Ġ= Ġ" å·² åľ¨ è¯» " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . book Type Btn 2 . text Ġ= Ġ" è¯» è¿ĩ " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġholder . book Type Btn 2 . setOnClickListener Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġposition Ġ= Ġholder . adapter Position ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbook Ġ= Ġbook List [ position ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdate Ġ= ĠDate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠdateFormat Ġ= ĠSimpleDateFormat (" yyyy - MM - dd ĠHH : mm : ss ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . insert Book Mark ( Book Mark ( userId , Ġbook . book _ id Ġ?: Ġ 0 , Ġ 2 , ĠdateFormat . format ( date ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . book Type Btn 0 . text Ġ= Ġ" æĥ³ è¯» " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . book Type Btn 1 . text Ġ= Ġ" åľ¨ è¯» " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( holder . book Type Btn 2 . text Ġ== Ġ" å·² è¯» è¿ĩ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . book Type Btn 2 . text Ġ= Ġ" è¯» è¿ĩ " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . book Type Btn 2 . text Ġ= Ġ" å·² è¯» è¿ĩ " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĊĠĠĠĠĠĠĠ Ġholder . delete Btn . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . delete Book ById ( book . book _ id Ġ?: Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . book List . remove At ( position ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( B VM Application . USER ?. user _ id Ġ!= Ġ 1 L ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . delete Btn . isVisible Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count () Ġ= Ġbook List . size ĊĊ Ċ }