package Ġcom . int act . movies box . di . module Ċ Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġcom . int act . movies box . di . scope . ViewModel Key Ċ import Ġcom . int act . movies box . presentation . view models . Fragment List ViewModel Ċ import Ġcom . int act . movies box . presentation . view models . Movie Detail ViewModel Ċ import Ġcom . int act . movies box . presentation . view models . Movies List ViewModel Ċ import Ġdagger . Bind s Ċ import Ġdagger . Module Ċ import Ġdagger . mult ib ind ings . Into Map Ċ import Ġjavax . inject . Singleton ĊĊ Ċ /** Ċ Ġ* Ċ Ġ* Ġthis Ġmodule Ġclass Ġprovides Ġthe Ġall Ġthe Ġview Ġmodel Ġclasses Ċ Ġ* Ġcreation Ġof Ġthe Ġview Ġmodel Ġclasses Ġis Ġdone Ġhere Ċ Ġ* ĠAlso , Ġit Ġwill Ġgive Ġthe Ġview Ġmodel Ġfactory Ġinstance Ġtoo . Ċ Ġ* ĠWe Ġneed Ġcustomized Ġview Ġmodel Ġfactory , Ġas Ġwe Ġneed Ġto Ġpass Ċ Ġ* Ġparameters Ġto Ġthe Ġview Ġmodels . ĠIf Ġnot , Ġwe Ġcould Ġdirectly Ġaccess Ċ Ġ* Ġthe ĠView Ġmodels Ġusing Ġproviders . Ċ Ġ* ĠYou Ġcan Ġcreate Ġseparate Ġview Ġmodel Ġfactory Ġfor Ġeach Ġview Ġmodel , Ċ Ġ* Ġbut Ġin Ġplace Ġof Ġthis , Ġwe Ġare Ġcreating Ġa Ġsingle Ġview Ġmodel Ġfactory Ċ Ġ* Ġwhich Ġis Ġgeneric . Ċ Ġ* Ċ Ġ* ĠIn ĠD agger Ġ 2 Ġexists Ġmult ib ind ings Ġand Ġwith Ġit Ġis Ġpossible Ġto Ġcreate Ġa ĠâĢľ map âĢĿ Ċ Ġ* Ġof Ġobjects Ġwith Ġa Ġspecific Ġkey . ĠIn Ġour Ġuse Ġcase Ġwill Ġbe Ġlike Ġbelow : Ċ Ġ* Ġthe Ġkey : Ġfor Ġexample Ġthe Ġclass Ġtype Ġof ĠViewModel ĠMy ViewModel :: class Ċ Ġ* Ġthe Ġvalue : Ġthe Ġinstance Ġof ĠViewModel ĠMy ViewModel ( repository , ĠâĢ¦ ) Ċ Ġ* Ċ Ġ* ĠD agger Ġ( Ġin Ġcompiling Ġtime ) Ġwill Ġcreate Ġthe Ġmap Ġand Ġwe Ġwill Ġprovide Ġthem Ċ Ġ* Ġto ĠCustom ViewModel Factory Ġas Ġargument , Ġso Ġwhen Ġwe Ġwill Ġinvoke Ġthe Ġcreate () Ġmethod Ċ Ġ* Ġit Ġwill Ġable Ġto Ġpick Ġthe Ġright Ġinstance Ġfrom Ġthe Ġmap : Ċ Ġ* Ċ Ġ* ĠCreated Ġby ĠAn ur ag ĠG arg Ġon Ġ 2 5 / 0 3 / 1 9 . Ċ Ġ*/ Ċ Ċ @ Suppress (" unused ") Ċ @ Module Ċ abstract Ġclass ĠViewModel Module Ġ{ ĊĊĠĠĠ Ġ@ Bind s ĊĠĠĠ Ġ@ Into Map ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ ViewModel Key ( Fragment List ViewModel :: class ) ĊĠĠĠ Ġinternal Ġabstract Ġfun Ġbind Fragment List ViewModel ( fragment List ViewModel : ĠFragment List ViewModel ): ĠViewModel ĊĊĠĠĠ Ġ@ Bind s ĊĠĠĠ Ġ@ Into Map ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ ViewModel Key ( Movie Detail ViewModel :: class ) ĊĠĠĠ Ġinternal Ġabstract Ġfun Ġbind Movie Detail ViewModel ( movie Detail ViewModel : ĠMovie Detail ViewModel ): ĠViewModel ĊĊĠĠĠ Ġ@ Bind s ĊĠĠĠ Ġ@ Into Map ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ ViewModel Key ( Movies List ViewModel :: class ) ĊĠĠĠ Ġinternal Ġabstract Ġfun Ġbind Movies List ViewModel ( movies List ViewModel : ĠMov ies List ViewModel ): ĠViewModel Ċ }