package Ġcom . example . android demo . jet pack . architecture . databinding Ċ Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġandroidx . lifecycle .* Ċ import Ġcom . example . android demo . R Ċ import Ġcom . example . android demo . databinding . Activity Binding Binding Ċ Ċ /** Ċ Ġ* Ġ åıĤèĢĥ ï¼ļ Ċ Ġ* Ġhttps :// developer . android . com / topic / libraries / data - binding Ċ Ġ* Ġhttps :// www . jian shu . com / p / e 3 b 8 8 1 d 8 0 c 6 d Ċ Ġ* Ċ Ġ* Ġæķ°æį® ç»ĳå®ļ Data Binding ï¼ļ Ċ Ġ* ĠData Binding åºĵ åı¯ä»¥ æĬĬ æķ°æį® æºĲ çĽ´æİ¥ ç»ĳå®ļ åĪ° è§ĨåĽ¾ ä¸Ń ï¼Į æ¯ı å½ĵ æķ°æį® æĽ´æĸ° æĹ¶ ï¼Į è§ĨåĽ¾ èĥ½ èĩªåĬ¨ æĽ´æĸ° ï¼Į ä»İ èĢĮ éģ¿åħį æĪĳä»¬ æīĭåĬ¨ æĽ´æĸ° è§ĨåĽ¾ çļĦ æĵįä½ľ Ċ Ġ* Ġ æīĢä»¥ ä½¿çĶ¨ Data Binding åı¯ä»¥ åĩı å°ĳ çļĦ Activity / Fragment ä»£çłģ éĩı ï¼Į éĢļè¿ĩ Data Binding åı¯ä»¥ æĽ´ å®¹æĺĵ çļĦ å®ŀçİ° MV VM Ċ Ġ* Ċ Ġ* Ġ ç»Ħ æĪĲ ï¼ļ Ċ Ġ* Ġ< layout >< layout >: Ġ éĩĮéĿ¢ åĮħåĲ« < data >< data > Ġ+ Ġ è§ĨåĽ¾ çļĦ æł¹ å¸ĥå±Ģ ï¼Į åħ¶ä¸Ń < data > æłĩçŃ¾ ä¸Ń åı¯ä»¥éĢļè¿ĩ < variable > æłĩçŃ¾ å®ļä¹ī åıĺéĩı Ċ Ġ* ĠData Binding Util ï¼ļ çĶ¨äºİ çĶŁæĪĲ XX B ing ing ç±» ï¼Į XX B ing ing ç±»çļĦ åĨħå®¹ æł¹æį® < layout >< layout > ä¸ŃçļĦ ç»ĳå®ļ åħ³ç³» çĶŁæĪĲ Ċ Ġ* Ċ Ġ* Ġ åŁºæľ¬ ä½¿çĶ¨ ï¼ļ Ċ Ġ* Ġ 1 ãĢģ è§ĨåĽ¾ çļĦ æł¹ å¸ĥå±Ģ ä½¿çĶ¨ < layout >< layout > åĮħ è£ ¹ ï¼Ľ Ċ Ġ* Ġ 2 ãĢģ éĢļè¿ĩ Data Binding Util çļĦ set ContentView / inflate / bind æĸ¹æ³ķ æĿ¥ è¿Ľè¡Į è§ĨåĽ¾ çļĦ ç»ĳå®ļ ï¼Į çĶŁæĪĲ XX Binding ç±» ï¼Ľ Ċ Ġ* Ġ 3 ãĢģ ç»Ļ XX Binding ç±» ä¸Ń å®ļä¹ī çļĦ variable åıĺéĩı èµĭåĢ¼ Ċ Ġ* Ċ Ġ* Ġps ï¼ļ ä¸İ è§ĨåĽ¾ è¿Ľè¡Į ç»ĳå®ļ çļĦæķ°æį® æºĲ æľĢ å¥½ æĺ¯ åı¯ è§Ĥ å¯Ł çļĦ ï¼Į è¿Ļæł· æķ°æį® æºĲ æĽ´æĸ° æĹ¶ æīįèĥ½ èĩªåĬ¨ åıį é¦ Ī åĪ° UI ä¸Ĭ ï¼Į åı¯ä»¥ä½¿çĶ¨ Data Binding çļĦ Observable XX ç±» åĮħ è£ ¹ ï¼Į æĪĸ ä½¿çĶ¨ LiveData åĮħ è£ ¹ Ċ Ġ*/ Ċ class ĠBinding Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject { ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠTAG Ġ= ĠBinding Activity . java Class . simple Name ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġlateinit Ġvar Ġbinding : ĠActivity Binding Binding ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġ/** Ġ 2 ãĢģ éĢļè¿ĩ Data Binding Util çļĦ çĽ¸åºĶ æĸ¹æ³ķ æĿ¥ è¿Ľè¡Į è§ĨåĽ¾ çļĦ ç»ĳå®ļ ï¼Į çĶŁæĪĲ XX Binding ç±» ï¼Ľ Ġ*/ ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠData Binding Util . set ContentView ( this , ĠR . layout . activity _ binding ) ĊĊĠĠĠĠĠĠĠ Ġ/** Ġ 3 ãĢģ ç»Ļ XX Binding ç±» ä¸Ń å®ļä¹ī çļĦ variable åıĺéĩı èµĭåĢ¼ Ġ*/ ĊĠĠĠĠĠĠĠ Ġbinding . viewModel Ġ= ĠViewModel Provider ( this )[ My ViewModel :: class . java ] ĊĠĠĠĠĠĠĠ Ġbinding . lifecycle Owner Ġ= Ġthis ĊĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ class ĠMy ViewModel : ĠViewModel (){ ĊĊĠĠĠ Ġprivate Ġvar Ġ_ like Count : ĠMutable LiveData < Int > Ġ= ĠMutable LiveData ( 0 ) ĊĊĠĠĠ Ġvar Ġlike Count : ĠLive Data < Int > Ġ= Ġ_ like Count ĊĠĠĠ Ġvar Ġpop ularity : ĠLive Data < Int > Ġ= ĠTransform ations . map (_ like Count ){ ĊĠĠĠĠĠĠĠ Ġit Ġ* Ġ 1 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Like (){ ĊĠĠĠĠĠĠĠ Ġ_ like Count . value Ġ= Ġ(_ like Count . value Ġ?: Ġ 0 ) Ġ+ Ġ 1 ĊĠĠĠ Ġ} Ċ Ċ } ĊĊ