package Ġcom . gb ros . tab sl ite . adapters Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . core . net . to Uri Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġandroidx . navigation . find Nav Controller Ċ import Ġandroidx . recyclerview . widget . Diff Util Ċ import Ġandroidx . recyclerview . widget . ListAdapter Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . gb ros . tab sl ite . Home ViewPager Fragment Directions Ċ import Ġcom . gb ros . tab sl ite . R Ċ import Ġcom . gb ros . tab sl ite . data . Int Tab Basic Ċ import Ġcom . gb ros . tab sl ite . databinding . ListItem Browse Tabs Binding Ċ Ċ private Ġconst Ġval ĠLOG _ NAME Ġ= Ġ" tab sl ite . Browse Tabs Ad ap " Ċ Ċ class ĠB rowse Tabs Adapter Ġ: ĊĠĠĠĠĠĠĠ ĠList Adapter < Int Tab Basic , ĠB rowse Tabs Adapter . Tab ViewHolder >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTab Diff Callback () ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠTab ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠTab ViewHolder ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠData Binding Util . inflate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLayoutInflater . from ( parent . context ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . list _ item _ browse _ tabs , Ġparent , Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠTab ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġholder . bind ( getItem ( position )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠTab ViewHolder ( private Ġval Ġbinding : ĠListItem Browse Tabs Binding ): ĠRecyclerView . ViewHolder ( binding . root ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . set ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . tab ?. let Ġ{ Ġtab Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigate To Tab ( tab ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġnavigate To Tab ( tab : ĠInt Tab Basic ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġnavigate Ġto Ġthe Ġtab Ġdetail Ġpage Ġon Ġitem Ġclick ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( LOG _ NAME , Ġ" Navig ating Ġfrom ĠF avorites Ġto ĠTab Ġ${ tab . tab Id }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdirection Ġ= ĠHome ViewPager Fragment Directions . action ViewPager Fragment To Tab Detail Fragment 2 ( false , Ġ" F avorites ", Ġtab . tab Id , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . root . find Nav Controller (). navigate ( direction ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġbind ( item : ĠInt Tab Basic ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtab Ġ= Ġitem ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhich Version . text Ġ= Ġ" ver . Ġ${ item . version }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexecute Pending Bindings () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġclass ĠTab Diff Callback Ġ: ĠDiff Util . Item Callback < Int Tab Basic >() Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġare Items The Same ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġold Item : ĠInt Tab Basic , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Item : ĠInt Tab Basic ĊĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġold Item . tab Id Ġ== Ġnew Item . tab Id ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġare Contents The Same ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġold Item : ĠInt Tab Basic , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Item : ĠInt Tab Basic ĊĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġold Item . tab Id Ġ== Ġnew Item . tab Id ĊĠĠĠ Ġ} Ċ }