package Ġcom . example . tracking my pan try . remote _ database Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . constraint layout . widget . Constraint Layout Ċ import Ġandroidx . core . view . isVisible Ċ import Ġandroidx . fragment . app . FragmentManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . example . tracking my pan try . Product Data Ċ import Ġcom . example . tracking my pan try . R Ċ import Ġcom . example . tracking my pan try . Vote Fragment Ċ import Ġcom . example . tracking my pan try . local _ database . Add Product ToLocal DB Ċ Ċ class ĠProduct Adapter ( ĊĠĠĠ Ġprivate Ġval Ġproducts : ĠArrayList < Product Data >, ĊĠĠĠ Ġprivate Ġval Ġtoken : ĠString ?, ĊĠĠĠ Ġprivate Ġval Ġsupport FragmentManager : ĠFragment Manager Ċ ) Ġ: ĠRecyclerView . Adapter < Custom ViewHolder >() Ġ{ ĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠCustom ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlayout Inflater Ġ= ĠLayoutInflater . from ( parent . context ) ĊĠĠĠĠĠĠĠ Ġval Ġcell For Row Ġ= Ġlayout Inflater . inflate ( R . layout . product _ card , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn ĠCustom ViewHolder ( cell For Row ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠCustom ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// P ongo Ġi Ġcamp i Ġdella Ġview Ġai Ġvalor i Ġdei Ġpro dot ti ĊĠĠĠĠĠĠĠ Ġholder . product Name . text Ġ= Ġproducts [ position ]. name ĊĠĠĠĠĠĠĠ Ġholder . product Description . text Ġ= Ġproducts [ position ]. description ĊĠĠĠĠĠĠĠ Ġ// Se Ġclic co Ġsu Ġun Ġpro dot to Ġest endo Ġla Ġsua Ġsche da Ġmo str ando Ġdue Ġbot ton i ĊĠĠĠĠĠĠĠ Ġholder . item View . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( holder . item View . findViewById < Constraint Layout >( R . id . expand able ). isVisible ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . item View . findViewById < Constraint Layout >( R . id . expand able ). visibility Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . item View . findViewById < Constraint Layout >( R . id . expand able ). visibility Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval ĠaddTo Database : ĠButton Ġ= Ġholder . item View . findViewById ( R . id . addTo Local List ) ĊĠĠĠĠĠĠĠ Ġ// Bot tone Ġche Ġserve Ġad Ġap ri re Ġun Ġdialog Ġper Ġaggi ung ere Ġun Ġpro dot to Ġal Ġdatabase Ġlocale ĊĠĠĠĠĠĠĠ ĠaddTo Database . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= ĠAdd Product ToLocal DB ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproducts [ position ]. barcode , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproducts [ position ]. name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproducts [ position ]. description ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . show ( support FragmentManager , Ġ" Post Product Details ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġvote : ĠButton Ġ= Ġholder . item View . findViewById ( R . id . vote Button ) ĊĠĠĠĠĠĠĠ Ġ// Bot tone Ġche Ġserve Ġper Ġd are Ġun Ġv oto Ġad Ġun Ġpro dot to ĊĠĠĠĠĠĠĠ Ġvote . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= ĠV ote Fragment ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproducts [ position ]. name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproducts [ position ]. description , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoken , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproducts [ position ]. id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . show ( support FragmentManager , Ġ" Vote Dialog ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// R itor na Ġil Ġnumero Ġdi Ġpro dot ti ĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġproducts . size ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ // Cl asse Ġconten ente Ġgli Ġog get ti Ġdella Ġview Ċ class ĠCustom ViewHolder ( view : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( view ) Ġ{ ĊĠĠĠ Ġval Ġproduct Name : ĠTextView Ġ= Ġview . findViewById ( R . id . product Name ) ĊĠĠĠ Ġval Ġproduct Description : ĠTextView Ġ= Ġview . findViewById ( R . id . product Description ) Ċ } Ċ