package Ġcom . frag gj ke e . databinding adapter . simple _ mult it ype Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġcom . frag gj ke e . databinding adapter . BR Ċ import Ġcom . frag gj ke e . databinding adapter . DEMO _ USERS Ċ import Ġcom . frag gj ke e . databinding adapter . R Ċ import Ġcom . frag gj ke e . databinding adapter . User Ċ import Ġcom . frag gj ke e . recycler adapter . Recycler Item Ċ Ċ class ĠSimple Mult it ype ViewModel Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġ_ recycler Items Ġ= ĠMutable LiveData < List < Recycler Item >>() ĊĠĠĠ Ġval Ġre cycler Items : ĠLive Data < List < Recycler Item >> Ġ= Ġ_ recycler Items ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġusers Ġ= Ġload Users () ĊĠĠĠĠĠĠĠ Ġval Ġadmins Ġ= Ġload Admin s () ĊĠĠĠĠĠĠĠ Ġ_ recycler Items . value Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġusers . map Ġ{ Ġit . to User Recycler Item () Ġ} Ġ+ Ġadmins . map Ġ{ Ġit . to Admin Recycler Item () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Users (): ĠList < User > Ġ= ĠDE MO _ USERS ĊĊĠĠĠ Ġprivate Ġfun Ġload Admin s (): ĠList < User > Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠ ĠUser ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġ 4 4 4 , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfirstName Ġ= Ġ" Admin ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlastName Ġ= Ġ"# 1 " ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ ĠUser ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġ 5 5 5 , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfirstName Ġ= Ġ" Admin ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlastName Ġ= Ġ"# 2 " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) Ċ } Ċ Ċ // ĠThis Ġparticular Ġexample Ġuses Ġa Ġsingle Ġdata Ġclass Ġ( User ) Ġand Ġconverts Ġit Ġinto Ġtwo Ġdifferent Ċ // ĠRe cycler Items , Ġthe Ġkey Ġdifference Ġhide s Ġin Ġ' layout Id ' Ġparameter , Ġi . e . Ġdifferent Ġlayouts Ġare Ċ // Ġused Ġto Ġrender Ġsame Ġobject . ĠThis Ġapproach Ġis Ġnot Ġmandatory , Ġit 's Ġperfectly Ġfine Ġto Ġuse Ġdifferent Ċ // Ġobjects Ġlike Ġ" User " Ġand Ġ" Admin " Ġin Ġthis Ġcase , Ġthe Ġonly Ġrequirement Ġhere Ġis Ġthat Ġevery Ġtype Ġof Ċ // ĠRe cycler Item Ġmust Ġuse Ġa Ġunique ĠR . layout . xxx Ġparameter Ġassigned Ġto Ġ' layout Id ' Ġvariable . Ċ private Ġfun ĠUser . to User Recycler Item () Ġ= ĠRe cycler Item ( ĊĠĠĠ Ġdata Ġ= Ġthis , ĊĠĠĠ Ġlayout Id Ġ= ĠR . layout . item _ user , ĊĠĠĠ Ġvariable Id Ġ= ĠBR . user Ċ ) Ċ Ċ private Ġfun ĠUser . to Admin Recycler Item () Ġ= ĠRe cycler Item ( ĊĠĠĠ Ġdata Ġ= Ġthis , ĊĠĠĠ Ġlayout Id Ġ= ĠR . layout . item _ admin , ĊĠĠĠ Ġvariable Id Ġ= ĠBR . user Ċ )