Slide 1

Slide 1 text

MV V M & N E S T E D F R AG M E N T/ V I E W S - V I E W M O D E L CO N T R AC TS M A R C O S DA M A S C E N O S R . A N D R O I D E NG I N E E R @marcospaulosd B R E T E R I C K S O N A N D R O I D E NG I N E E R I NG M A N AG E R linkedin.com/in/breterickson/

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

A N D R O I D H O N E YCO M B R E L E A S E D O N F E B , 2 01 1

Slide 5

Slide 5 text

A N D R O I D H O N E YCO M B R E L E A S E D O N F E B , 2 01 1 C O M P L E X A N D DY N A M I C V I E W S B EC A M E MO R E PO P U L A R

Slide 6

Slide 6 text

A N D R O I D H O N E YCO M B R E L E A S E D O N F E B , 2 01 1 C O M P L E X A N D DY N A M I C V I E W S B EC A M E MO R E PO P U L A R H E L LO F R AG M E N TS

Slide 7

Slide 7 text

A N D R O I D U I CO M P L E X I T Y TA B L E TS A R E N OW H E R E TO B E S E E N B U T P H O N E S A R E B I G

Slide 8

Slide 8 text

A N D R O I D U I CO M P L E X I T Y TA B L E TS A R E N OW H E R E TO B E S E E N B U T P H O N E S A R E B I G A P P S A R E B EC O M I NG C O N S TA N T LY C O M P L E X

Slide 9

Slide 9 text

A N D R O I D U I CO M P L E X I T Y TA B L E TS A R E N OW H E R E TO B E S E E N B U T P H O N E S A R E B I G A P P S A R E B EC O M I NG C O N S TA N T LY C O M P L E X

Slide 10

Slide 10 text

H O W D O W E CO M M U N IC AT E B E T W E E N S O M A N Y D I F F E R E N T V I E W S A N D F R AG M E N T S

Slide 11

Slide 11 text

CO M M U N I C AT I O N B E T W E E N F R AG M E N T S I N T E N T B R OA D C A S T/ B U N D L E S

Slide 12

Slide 12 text

CO M M U N I C AT I O N B E T W E E N F R AG M E N T S C A L L B AC K S & I N T E R FAC E S O NC L IC K L I ST E N E R I M P L BY AC T IV I T Y - C A L L BAC K H E L L C A ST AC T IV I T Y I N TO A N I N T E R FAC E I N S I D E T H E F R AG M E N T - W H AT I F I WA N T TO R E U S E I T 
 I N S I D E A NOT H E R F R AG M E N T V I E W CO N T R O L L E R S J U G G L E CO M M U N I C AT IO N LOG IC

Slide 13

Slide 13 text

CO M M U N I C AT I O N B E T W E E N F R AG M E N T S R X S U B J EC TS I N J EC T I N G A N R X S U B J EC T I N TO A F R AG M E N T ’ S V M / P R E S E N T E R M AY E X PO S E M U TA B L E VA L U E S E V E RY W H E R E R X S U B J EC T S A R E N OT FAU LT TO L E R A N T - AT T H E E N D, A FA NC Y A LT E R N AT IV E TO E V E N T B U S - O N E E R R O R E M I T T E D 
 A N D YO U ’ R E D O N E D I F F IC U LT TO D E B U G & U N D E R S TA N D F LOW A S CO M P L E X I T Y I NC R E A S E S

Slide 14

Slide 14 text

P O P U L A R A R C H I T EC T U R E S

Slide 15

Slide 15 text

P O P U L A R A R C H I T EC T U R E S D O M A I N - DATA

Slide 16

Slide 16 text

P O P U L A R A R C H I T EC T U R E S D O M A I N - DATA DATA L AY E R R E P O S I TO RY DATA S TO R E A P I C L I E N T

Slide 17

Slide 17 text

P O P U L A R A R C H I T EC T U R E S D O M A I N - DATA DATA L AY E R R E P O S I TO RY DATA S TO R E A P I C L I E N T D O M A I N I N T E R FAC E S U S E C A S E S

Slide 18

Slide 18 text

P O P U L A R A R C H I T EC T U R E S D O M A I N - DATA DATA L AY E R R E P O S I TO RY DATA S TO R E A P I C L I E N T D O M A I N I N T E R FAC E S U S E C A S E S U I V I E W M O D E L S F R AG M E N TS C U STO M V I E W S

Slide 19

Slide 19 text

P O P U L A R A R C H I T EC T U R E S U I V I E W M O D E L S F R AG M E N TS C U STO M V I E W S

Slide 20

Slide 20 text

U I V I E W M O D E L S F R AG M E N TS C U STO M V I E W S

Slide 21

Slide 21 text

U I

Slide 22

Slide 22 text

U I D O U BT S S H O U L D I H AV E O N E V I E W MO D E L FO R M U LT I P L E F R AG M E N T S ?

Slide 23

Slide 23 text

U I D O U BT S S H O U L D I H AV E O N E V I E W MO D E L FO R M U LT I P L E F R AG M E N T S ? I S I T O K TO H AV E V I E W MO D E L S FO R C U STO M V I E W S ?

Slide 24

Slide 24 text

U I D O U BT S S H O U L D I H AV E O N E V I E W MO D E L FO R M U LT I P L E F R AG M E N T S ? I S I T O K TO H AV E V I E W MO D E L S FO R C U STO M V I E W S ? S H O U L D W E S H A R E V I E W MO D E L S AC R O S S M U LT I P L E U I E L E M E N T S ?

Slide 25

Slide 25 text

I N T R O D U C I N G

Slide 26

Slide 26 text

V I E W M O D E L CO N T R AC T S I N T R O D U C I N G

Slide 27

Slide 27 text

B U T B E F O R E

Slide 28

Slide 28 text

B U T B E F O R E L E T ’ S A N A LYZ E A S I M P L E P R O B L E M

Slide 29

Slide 29 text

A R EG I ST R AT IO N F LO W

Slide 30

Slide 30 text

R EG I ST R AT IO N F LOW : F E AT U R E R EQ U I R E M E N TS

Slide 31

Slide 31 text

R EG I ST R AT IO N F LOW : F E AT U R E R EQ U I R E M E N TS U S E R N A M E

Slide 32

Slide 32 text

R EG I ST R AT IO N F LOW : F E AT U R E R EQ U I R E M E N TS E M A I L U S E R N A M E

Slide 33

Slide 33 text

R EG I ST R AT IO N F LOW : F E AT U R E R EQ U I R E M E N TS I N T E R E S TS E M A I L U S E R N A M E

Slide 34

Slide 34 text

R EG I ST R AT IO N F LOW : F E AT U R E R EQ U I R E M E N TS I N T E R E S TS E M A I L U S E R N A M E

Slide 35

Slide 35 text

B A S I C I M P L E M E N TAT I O N M U LT I - AC T IV I T Y ?

Slide 36

Slide 36 text

B A S I C I M P L E M E N TAT I O N M U LT I - AC T IV I T Y ?

Slide 37

Slide 37 text

B A S I C I M P L E M E N TAT I O N M U LT I - AC T IV I T Y ? C A L L B AC K I N T E R FAC E S

Slide 38

Slide 38 text

RegistrationActivity

Slide 39

Slide 39 text

RegistrationActivity RegistrationViewModel L I V E D ATA

Slide 40

Slide 40 text

RegistrationActivity UsernameFragment RegistrationViewModel L I V E D ATA

Slide 41

Slide 41 text

RegistrationActivity UsernameFragment UsernameCallback RegistrationViewModel L I V E D ATA

Slide 42

Slide 42 text

F E AT U R E C R E E P ! ! ! ! !

Slide 43

Slide 43 text

P E R S I S T E D R EG I S T R AT I O N P R O G R E S S U I F E AT U R E C R E E P ! ! ! ! !

Slide 44

Slide 44 text

P E R S I S T E D R EG I S T R AT I O N P R O G R E S S U I F E AT U R E C R E E P ! ! ! ! !

Slide 45

Slide 45 text

P E R S I S T E D R EG I S T R AT I O N P R O G R E S S U I F E AT U R E C R E E P ! ! ! ! !

Slide 46

Slide 46 text

R E FAC TO R I NG C A L L B AC K I N T E R FAC E S

Slide 47

Slide 47 text

R E FAC TO R I NG I N T E R FAC E C A L L B AC K S

Slide 48

Slide 48 text

R E FAC TO R I NG S H A R E D V I E W MO D E L I N T E R FAC E C A L L B AC K S

Slide 49

Slide 49 text

UsernameFragment RegistrationActivity RegistrationViewModel L I V E D ATA UsernameCallback

Slide 50

Slide 50 text

UsernameFragment RegistrationActivity RegistrationViewModel L I V E D ATA

Slide 51

Slide 51 text

UsernameFragment ProgressFragment EmailFragment InterestsFragment RegistrationActivity RegistrationViewModel L I V E D ATA

Slide 52

Slide 52 text

L IV E DATA & V I E W M O D E L R E F R E S H E R

Slide 53

Slide 53 text

L IV E DATA & V I E W MO D E L R E F R E S H E R

Slide 54

Slide 54 text

L IV E DATA & V I E W MO D E L R E F R E S H E R L IV E DATA

Slide 55

Slide 55 text

L IV E DATA W O R K S L I K E A B E H AV I O R S U B J EC T

Slide 56

Slide 56 text

L IV E DATA W O R K S L I K E A B E H AV I O R S U B J EC T E V E RY T I M E W E S U B S C R I B E TO I T, I T E M I TS T H E L AT E ST VA L U E

Slide 57

Slide 57 text

L IV E DATA W O R K S L I K E A B E H AV I O R S U B J EC T E V E RY T I M E W E S U B S C R I B E TO I T, I T E M I TS T H E L AT E ST VA L U E O B S E R VAT IO N C A N B E AT TAC H E D TO A L I F EC YC L E

Slide 58

Slide 58 text

V I E W MO D E L

Slide 59

Slide 59 text

V I E W MO D E L S H A R E V I E W MO D E L

Slide 60

Slide 60 text

V I E W MO D E L S H A R E V I E W MO D E L

Slide 61

Slide 61 text

V I E W MO D E L S H A R E V I E W MO D E L

Slide 62

Slide 62 text

V I E W MO D E L S H A R E V I E W MO D E L

Slide 63

Slide 63 text

V I E W MO D E L S H A R E V I E W MO D E L

Slide 64

Slide 64 text

V I E W MO D E L S H A R E V I E W MO D E L

Slide 65

Slide 65 text

V I E W MO D E L S H A R E V I E W MO D E L

Slide 66

Slide 66 text

V I E W MO D E L S H A R E V I E W MO D E L

Slide 67

Slide 67 text

V I E W MO D E L S H A R E V I E W MO D E L

Slide 68

Slide 68 text

V I E W MO D E L S H A R E V I E W MO D E L

Slide 69

Slide 69 text

V I E W MO D E L S H A R E V I E W MO D E L WAIT A MINUTE!!!!

Slide 70

Slide 70 text

V I E W MO D E L S H A R E V I E W MO D E L

Slide 71

Slide 71 text

V I E W MO D E L

Slide 72

Slide 72 text

V I E W MO D E L V I E W M O D E L I N STA N C E S A R E S TO R E D I N A M A P W H E R E T H E C A NO N I C A L N A M E I S A K E Y A N D T H E C L A Z Z I S T H E VA LU E

Slide 73

Slide 73 text

V I E W MO D E L V I E W M O D E L I N STA N C E S A R E S TO R E D I N A M A P W H E R E T H E C A NO N I C A L N A M E I S A K E Y A N D T H E C L A Z Z I S T H E VA LU E W H E N W E D O N ’ T F I N D A N I N S TA N C E FO R T H AT C L A S S C A N O N I C A L N A M E , W E T H E N M A K E A N E W I N STA NC E A N D A D D TO T H E M A P

Slide 74

Slide 74 text

V I E W MO D E L I F W E H AV E T H E C L A Z Z O F T H E V I E W M O D E L T H AT W E WA N T

Slide 75

Slide 75 text

V I E W MO D E L I F W E H AV E T H E C L A Z Z O F T H E V I E W M O D E L T H AT W E WA N T C A N W E PA S S T H AT I N F O R M AT IO N TO O U R F R AG M E N TS A N D H AV E I T LO O K F O R T H E V I E W M O D E L F O R T H AT C L A Z Z ?

Slide 76

Slide 76 text

V I E W MO D E L I F W E H AV E T H E C L A Z Z O F T H E V I E W M O D E L T H AT W E WA N T C A N W E PA S S T H AT I N F O R M AT IO N TO O U R F R AG M E N TS A N D H AV E I T LO O K F O R T H E V I E W M O D E L F O R T H AT C L A Z Z ? C A N W E ACC E S S T H E PA R E N T V I E W MO D E L W I T HO U T K NOW I NG W H AT T H AT PA R E N T V I E W M O D E L I S ?

Slide 77

Slide 77 text

V I E W MO D E L I F W E H AV E T H E C L A Z Z O F T H E V I E W M O D E L T H AT W E WA N T C A N W E PA S S T H AT I N F O R M AT IO N TO O U R F R AG M E N TS A N D H AV E I T LO O K F O R T H E V I E W M O D E L F O R T H AT C L A Z Z ? C A N W E ACC E S S T H E PA R E N T V I E W MO D E L W I T HO U T K NOW I NG W H AT T H AT PA R E N T V I E W M O D E L I S ?

Slide 78

Slide 78 text

V I E W MO D E L I F W E H AV E T H E C L A Z Z O F T H E V I E W M O D E L T H AT W E WA N T C A N W E PA S S T H AT I N F O R M AT IO N TO O U R F R AG M E N TS A N D H AV E I T LO O K F O R T H E V I E W M O D E L F O R T H AT C L A Z Z ? C A N W E ACC E S S T H E PA R E N T V I E W MO D E L W I T HO U T K NOW I NG W H AT T H AT PA R E N T V I E W M O D E L I S ? Y E S W E C A N

Slide 79

Slide 79 text

UsernameFragment ProgressFragment EmailFragment InterestsFragment RegistrationActivity RegistrationViewModel L I V E D ATA

Slide 80

Slide 80 text

UsernameFragment ProgressFragment EmailFragment InterestsFragment RegistrationViewModel L I V E D ATA

Slide 81

Slide 81 text

RegistrationViewModel L I V E D ATA UsernameFragment EmailFragment ProgressFragment InterestsFragment

Slide 82

Slide 82 text

RegistrationViewModel L I V E D ATA UsernameFragment EmailFragment ProgressFragment InterestsFragment

Slide 83

Slide 83 text

RegistrationViewModel L I V E D ATA UsernameFragment EmailFragment ProgressFragment InterestsFragment

Slide 84

Slide 84 text

RegistrationViewModel L I V E D ATA UsernameFragment EmailFragment ProgressFragment InterestsFragment

Slide 85

Slide 85 text

RegistrationViewModel L I V E D ATA UsernameFragment EmailFragment ProgressFragment InterestsFragment : UsernameFragmentViewModelContract

Slide 86

Slide 86 text

RegistrationViewModel L I V E D ATA UsernameFragment EmailFragment ProgressFragment InterestsFragment : UsernameFragmentViewModelContract : EmailFragmentViewModelContract

Slide 87

Slide 87 text

RegistrationViewModel L I V E D ATA UsernameFragment EmailFragment ProgressFragment InterestsFragment : UsernameFragmentViewModelContract : EmailFragmentViewModelContract : InterestsFragmentViewModelContract

Slide 88

Slide 88 text

RegistrationViewModel L I V E D ATA UsernameFragment EmailFragment ProgressFragment InterestsFragment : UsernameFragmentViewModelContract : EmailFragmentViewModelContract : InterestsFragmentViewModelContract : ProgressFragmentViewModelContract

Slide 89

Slide 89 text

RegistrationViewModel L I V E D ATA UsernameFragment EmailFragment ProgressFragment InterestsFragment : UsernameFragmentViewModelContract : EmailFragmentViewModelContract : InterestsFragmentViewModelContract : ProgressFragmentViewModelContract arguments.put(key, RegistrationViewModel::class.java) instantiate

Slide 90

Slide 90 text

RegistrationViewModel L I V E D ATA UsernameFragment EmailFragment InterestsFragment : UsernameFragmentViewModelContract : EmailFragmentViewModelContract : InterestsFragmentViewModelContract : ProgressFragmentViewModelContract arguments.put(key, RegistrationViewModel::class.java) VMProvider.of(…).get(arguments[key]) as UsernameFragmentViewModelContract) instantiate

Slide 91

Slide 91 text

RegistrationViewModel L I V E D ATA UsernameFragment EmailFragment InterestsFragment : UsernameFragmentViewModelContract : EmailFragmentViewModelContract : InterestsFragmentViewModelContract : ProgressFragmentViewModelContract ProgressFragment

Slide 92

Slide 92 text

RegistrationViewModel L I V E D ATA UsernameFragment EmailFragment InterestsFragment : UsernameFragmentViewModelContract : EmailFragmentViewModelContract : InterestsFragmentViewModelContract : ProgressFragmentViewModelContract ProgressFragment

Slide 93

Slide 93 text

RegistrationViewModel L I V E D ATA UsernameFragment EmailFragment InterestsFragment : UsernameFragmentViewModelContract : EmailFragmentViewModelContract : InterestsFragmentViewModelContract : ProgressFragmentViewModelContract ProgressFragment

Slide 94

Slide 94 text

RegistrationViewModel L I V E D ATA UsernameFragment EmailFragment InterestsFragment : UsernameFragmentViewModelContract : EmailFragmentViewModelContract : InterestsFragmentViewModelContract : ProgressFragmentViewModelContract ProgressFragment

Slide 95

Slide 95 text

RegistrationViewModel L I V E D ATA UsernameFragment EmailFragment InterestsFragment : UsernameFragmentViewModelContract : EmailFragmentViewModelContract : InterestsFragmentViewModelContract : ProgressFragmentViewModelContract ProgressFragment

Slide 96

Slide 96 text

RegistrationViewModel L I V E D ATA UsernameFragment EmailFragment InterestsFragment : UsernameFragmentViewModelContract : EmailFragmentViewModelContract : InterestsFragmentViewModelContract : ProgressFragmentViewModelContract ProgressFragment

Slide 97

Slide 97 text

RegistrationViewModel L I V E D ATA RegistrationActivity

Slide 98

Slide 98 text

No content

Slide 99

Slide 99 text

RegistrationMasterViewModel L I V E D ATA RegistrationMasterFragment

Slide 100

Slide 100 text

RegistrationMasterViewModel L I V E D ATA RegistrationMasterFragment

Slide 101

Slide 101 text

UsernameFragment EmailFragment InterestsFragment : UsernameFragmentViewModelContract : EmailFragmentViewModelContract : InterestsFragmentViewModelContract : ProgressFragmentViewModelContract ProgressFragment RegistrationMasterViewModel L I V E D ATA

Slide 102

Slide 102 text

UsernameFragment EmailFragment InterestsFragment : UsernameFragmentViewModelContract : EmailFragmentViewModelContract : InterestsFragmentViewModelContract : ProgressFragmentViewModelContract ProgressFragment RegistrationMasterViewModel L I V E D ATA arguments.put(key, RegistrationMasterViewModel::class.java) instantiate

Slide 103

Slide 103 text

A R EG I ST R AT I O N F LO W W I T H V I E W M O D E L CO N T R AC T S

Slide 104

Slide 104 text

ProgressFragment RegistrationActivity RegistrationViewModel L I V E D ATA

Slide 105

Slide 105 text

ProgressFragment RegistrationActivity RegistrationViewModel L I V E D ATA

Slide 106

Slide 106 text

ProgressFragment RegistrationActivity RegistrationViewModel L I V E D ATA

Slide 107

Slide 107 text

ProgressFragment L I V E D ATA RegistrationActivity RegistrationViewModel L I V E D ATA 1 ProgressViewModelContract

Slide 108

Slide 108 text

ProgressFragment L I V E D ATA RegistrationActivity RegistrationViewModel L I V E D ATA 1 2 ProgressViewModelContract

Slide 109

Slide 109 text

ProgressFragment L I V E D ATA RegistrationActivity RegistrationViewModel L I V E D ATA 1 2 3 ProgressViewModelContract

Slide 110

Slide 110 text

ProgressFragment ProgressViewModelContract L I V E D ATA RegistrationActivity RegistrationViewModel L I V E D ATA 1 2 3 4

Slide 111

Slide 111 text

P R OG R E S S V I E W MO D E L CO N T R AC T

Slide 112

Slide 112 text

P R OG R E S S V I E W MO D E L CO N T R AC T

Slide 113

Slide 113 text

P R OG R E S S V I E W MO D E L CO N T R AC T

Slide 114

Slide 114 text

U S I NG T H E V I E W M O D E L CO N T R AC T

Slide 115

Slide 115 text

U S I NG T H E V I E W M O D E L CO N T R AC T

Slide 116

Slide 116 text

U S I NG T H E V I E W M O D E L CO N T R AC T

Slide 117

Slide 117 text

U S I NG T H E V I E W M O D E L CO N T R AC T

Slide 118

Slide 118 text

R E T R I E V I N G A V I E W MO D E L CO N T R AC T

Slide 119

Slide 119 text

R E T R I E V I N G A V I E W MO D E L CO N T R AC T

Slide 120

Slide 120 text

R E T R I E V I N G A V I E W MO D E L CO N T R AC T

Slide 121

Slide 121 text

R E T R I E V I N G A V I E W MO D E L CO N T R AC T

Slide 122

Slide 122 text

E N FO R C I NG V I E W MO D E L CO N T R AC T U SAG E

Slide 123

Slide 123 text

E N FO R C I NG V I E W MO D E L CO N T R AC T U SAG E

Slide 124

Slide 124 text

R EG I ST E R I NG T H E V I E W MO D E L K E Y

Slide 125

Slide 125 text

C R E AT I N G T H E F R AG M E N T

Slide 126

Slide 126 text

C R E AT I N G T H E F R AG M E N T

Slide 127

Slide 127 text

C R E AT I N G T H E F R AG M E N T

Slide 128

Slide 128 text

I M P L E M E N T I N G T H E CO N T R AC T

Slide 129

Slide 129 text

I M P L E M E N T I N G T H E CO N T R AC T

Slide 130

Slide 130 text

I M P L E M E N T I N G T H E CO N T R AC T

Slide 131

Slide 131 text

V I E W MO D E L CO N T R AC TS , A DVA NC E D PA R E N T F R AG M E N T S & AC T IV I T I E S M ATC H BY L A Z Y S T Y L E

Slide 132

Slide 132 text

V I E W MO D E L CO N T R AC TS , A DVA NC E D

Slide 133

Slide 133 text

V I E W MO D E L CO N T R AC TS , A DVA NC E D

Slide 134

Slide 134 text

TA K E AWAYS

Slide 135

Slide 135 text

TA K E AWAYS Decouples Fragments

Slide 136

Slide 136 text

TA K E AWAYS Decouples Fragments Reduces Scope

Slide 137

Slide 137 text

TA K E AWAYS Decouples Fragments Reduces Scope Improves reusability

Slide 138

Slide 138 text

TA K E AWAYS

Slide 139

Slide 139 text

MV V M & N E S T E D F R AG M E N T/ V I E W S - V I E W M O D E L CO N T R AC TS M A R C O S DA M A S C E N O S R . A N D R O I D E NG I N E E R @marcospaulosd B R E T E R I C K S O N A N D R O I D E NG I N E E R I NG M A N AG E R linkedin.com/in/breterickson/

Slide 140

Slide 140 text

MV V M & N E S T E D F R AG M E N T/ V I E W S - V I E W M O D E L CO N T R AC TS M A R C O S DA M A S C E N O S R . A N D R O I D E NG I N E E R @marcospaulosd B R E T E R I C K S O N A N D R O I D E NG I N E E R I NG M A N AG E R linkedin.com/in/breterickson/ T H A N K YO U

Slide 141

Slide 141 text

MV V M & N E S T E D F R AG M E N T/ V I E W S - V I E W M O D E L CO N T R AC TS M A R C O S DA M A S C E N O S R . A N D R O I D E NG I N E E R @marcospaulosd B R E T E R I C K S O N A N D R O I D E NG I N E E R I NG M A N AG E R linkedin.com/in/breterickson/ T H A N K YO U http://bit.ly/
 ViewModelContracts