Ò»¡¢¼ò½é
Ê×ÏÈÉùÃ÷£¬±¾ÎĽ²½âµÄAndroid DataBindingÔÀí£¬²»Éæ¼°Android DataBindingµÄÅäÖúÍʹÓã¬Èç¹û´ó¼ÒÏëÁ˽âAndroid
DataBindingµÄʹÓý̳̣¬ÇëÈ¥Google Android¹ÙÍø£¬ÀïÃæÓзdz£ÏêϸµÄ½²½â¡£ÁíÍ⣬±¾ÎÄÒ²²»ÊÇΪAndroid
DataBinding¸è¹¦Ë̵µģ¬Èç¹û¶Ô×ŶԱ¾ÎĵÄһЩ×ܽáÓв»Í¬¹Ûµã£¬ÇëÁôÑÔ£¬Ï£ÍûºÍ´ó¼ÒÒ»Æð˼¿¼ÕâÏм¼Êõ¡±¡£
DataBinding¿ò¼ÜÊÇÈ¥Äê¹È¸è I/O´ó»áÉϽéÉܵġ°Ð¼¼Êõ¡±£¬ Êý¾Ý°ó¶¨¿ò¼ÜÄܹ»¸øÎÒÃÇ´øÀ´ÁËÒ»¶¨µÄ·½±ã£¬ÎÞÐèfindviewByID²Ù×÷Ò²¿É»ñÈ¡View£¬Êý¾ÝModel¸üÐÂ×Ô¶¯Ó³Éäµ½¿Ø¼þÉÏ¡¡
Android DatabingdingÊôÓÚµ¥Ïò°ó¶¨¿ò¼Ü¡£
¹ËÃû˼Ò壬DataBinding¼´Êý¾Ý°ó¶¨£¬Êý¾Ý°ó¶¨±¾²»ÊÇʲôÐÂÏʼ¼Êõ£¬×öasp.NET Web¿ª·¢µÄͬѧӦ¸Ã¶¼ÓùýDatabinding°ó¶¨Í¼±íÊý¾Ý£¬C#±¾ÉíÒ²Ö§³Ö¿Ø¼þµÄÊý¾Ý°ó¶¨¡£ÔÚAndroid²ãÃæ£¬GoogleÒ²²»ÊǵÚÒ»¸ö×öÊý¾Ý°ó¶¨µÄ£¬¿ªÔ´ÏîÄ¿RoboAndroidÔçÒÑ»ùÓÚAndroidƽ̨¿ª·¢ÁËÒ»Ì×Êý¾Ý°ó¶¨¿ò¼Ü£¬RoboAndroidÊôÓÚË«Ïò°ó¶¨¿ò¼Ü¡£
µ¥Ïò°ó¶¨ÊÇÖ¸presentation modelÉϵÄÊôÐÔ¸üлá×Ô¶¯µÄͬ²½µ½ÏàÓ¦µÄÊÓͼÊôÐÔÉÏ¡£Ë«Ïò°ó¶¨ÔÚµ¥Ïò°ó¶¨µÄ»ù´¡ÉÏ£¬Ôö¼ÓÁ˽«ÊÓͼÉϵıä¸üͬ²½»Øpresentation
modelÏàÓ¦µÄÊôÐÔÉÏ¡£
¶þ¡¢ÎªÊ²Ã´ÒªÓÐDatabinding
ÕâÒª´ÓÈí¼þµÄÊÓͼÂß¼¼Ü¹¹Ä£ÐÍ˵Æð£¬³£¼ûµÄÄ£ÐÍÓÐMVC¡¢MVPºÍMVVM£¬ÕâÈýÖÖÄ£Ð͸÷ÓÐÓÅȱµã£¬¿´×źÜÏñ£¬ÆäʵÓнϴó²»Í¬£¬Android
DatabindingµÄ×÷ÓþÍÊǽ«ÔÀ´Android¿ª·¢Ä£Ê½´ÓMVCתµ½MVVM¡£AndroidµÄActivity+LayoutÎļþģʽÊôÓÚMVC£¬ÎÒÃÇ×öAndroid¿ª·¢µÄʱºò»á·¢ÏÖ£¬Ò»²»Ð¡ÐÄÒ»¸öActivityµÄ´úÂë¾Í³¬¹ý1ǧ¶àÐУ¬ÊÓͼÂß¼ºÍÒµÎñÂ߼ȫ²¿»ìÔÚÒ»Æð£¬´úÂëµÄ¿Éά»¤ÐԷdz£²î£¬ÕâÊÇGoogleÍÆ³öDatabindingÏë½â¾öµÄÎÊÌâ¡£
ÕâÀï¸´ÖÆÕ³ÌùһϴóÅ£ÃǶÔÕâÈý¸öÂß¼¼Ü¹¹µÄÀí½â¡£
1¡¢MVC
MVC£¬¹ËÃû˼Ò壬MVCÊǽ«Model, View ºÍController·ÖÀ룬Èñ˴˵ÄÖ°Ôð(responsibility)Äܹ»Ã÷È·µÄ·Ö¿ª£¬ÕâÑù²»ÂÛÊǸÄM¡¢
V»¹ÊÇC£¬¶¼¿ÉÒÔÈ·±£ÁíÍâÁ½²ã¿É²»ÓÃ×öÈκÎÐ޸ģ¬Í¬Ê±ÕâÑùµÄ·Ö²ãÒ²¿ÉÒÔ¼ÓÇ¿³ÌʽµÄ¿É²âÊÔÐÔ(testability)£¬ViewºÍModel»ù±¾ÉÏÊÇÏà¹ØµÄ£¬µ«ËüÃDz¢²»»áÓÐÖ±½ÓµÄÏàÒÀ¹ØÏµ£¬¶øÊÇÓÉControllerÈ¥¾ö¶¨Model²úÉúµÄ×ÊÁÏ£¬È»ºó¶ª¸øViewÈ¥×ö³ÊÏÖ£¬Ò²¾ÍÊÇ˵£¬ControllerÊÇModelºÍViewÖ®¼äµÄе÷Õß(coordinator)£¬ViewºÍModel²»ÄÜÖ±½Ó¹µÍ¨£¬ÒÔÈ·±£ÔðÈεķÖÀë¡£¶øController¿ÉÒÔÖ»ÊÇÒ»¸öϵ½áModelºÍViewµÄСÀà±ð£¬Ò²¿ÉÒÔÊÇ´óµ½°üº¬Workflow,
Enterprise Services»òÊÇ×öΪÍⲿϵͳµÄProxy ServicesµÈµÄÂ߼ϵͳ£¬MVC¸÷Ôª¼þÊÇ¿ÉÒÔ·ÖÀëµÄ×é¼þ£¬Ò²¿ÉÒÔÊÇ·ÖÀëµÄϵͳ(µ±È»ÒªÉè¼ÆÒ»Ð©»úÖÆÔÚÏ໥¹µÍ¨)¡£¿ÉÒÔ¿´µ½MVCÖÐController£¨Activity£©ÖмÈÒª¿ØÖÆÊÓͼ£¨Layout£©Ò²Òª´¦ÀíÒµÎñ£¨Êý¾Ý£©£¬ControllerÖ»Êǽ«View£¨layout£©ÓëModel¾¡¿ÉÄÜ·Ö¿ª£¬µ±È»ViewÒ²¿ÉÒÔÖ±½Ó»ñÈ¡ModelÊý¾Ý£¬Èç¹û½«ViewÓëModelÍêÈ«·Ö¿ª£¬¾ÍҪʹÓÃMVP¿ò¼Ü¡£

×ܽáMVC£º
1) ÊÓͼ²ã£¨View£©£ºÒ»°ã²ÉÓÃXML²¼¾ÖÎļþ½øÐнçÃæµÄÃèÊö£¬Ò²¿ÉʹÓôúÂë¡£
2) ¿ØÖƲ㣨Controller£©£ºAndroidµÄ¿ØÖƲãÊÇActivity»òFragment£¬Ò»¸öActivity¿ÉÒÔ¶ÔÓ¦¶à¸öFragment¡£Ä¿Ç°µãÆÀAndroidµÄ¿ò¼Ü²ÉÓÃFragment£¬´ó¶àÊýÒ³Ãæ²ÉÓÃFragment×÷Ϊ¿ØÖƲ㡣
3) Ä£ÐͲ㣨Model£©£ºÊý¾ÝÄ£ÐÍ£¬ÓÉÓÚAndroid±äÁ¿¸öÊýÏÞÖÆ£¬Ä¿Ç°µãÆÀAndroid¼¸ºõ²»´æÔÚModel¡£
ȱµã£º
Ö÷ÒªµÄȱµãÊÇControllerÌ«¸´ÔÓ£¬ÏÔʾÂß¼ºÍÆäËûÂß¼»ìºÏÔÚÒ»Æð²»ºÃά»¤£»ÓÉÓÚȱÉÙÊý¾ÝÄ£ÐÍÖ§³Ö£¬´úÂë¸ü»ìÂÒ£»Ä£¿é¡¢¿Ø¼þ¿É¸´ÓÃÐԵ͡£
2¡¢MVP
MVP£¬MVPÒ»ÑùÒ²ÊÇÖ°Ôð·ÖÃ÷£¬ÇÒModelÓëView·ÖÀëµÄ¼Ü¹¹£¬µ«ÊÇÕâ¸öP (Presenter)ºÍViewModel¾ÍºÜÀàËÆ£¬²»¹ý¾ÍÈçͬPresenter
(Ö÷³ÖÈË)Õâ¸ö×ÖËù´ú±íµÄÒâÒ壬ËùÓÐÖ÷¿ØView³ÊÏֵŤ×÷£¬¶¼ÊÇÓÉPresenterÀ´×ö£¬¶øView±¾ÉíÖ»ÊÇPresenterËùҪʹÓõÄÎę̀¶øÒÑ£¬ËùÒÔViewÔÔòÉÏ»áÏàÒÀÓÚPresenter£¬µ«ÊÇΪÁËÒª×öµ½¹Ø×¢µã·ÖÀë(SoCÔÔò)£¬ËùÒÔÔÚViewºÍPresenter¼ä¶¼»á¼ÓÈëÒ»¸ö½éÃæ(ex:
IView)£¬È»ºóÒÔIoCµÄ·½Ê½½«View×¢Éäµ½PresenterÖУ¬¶øPresenter¾ÍʹÓýéÃæËù¶¨ÒåµÄ·½·¨È¥²Ù¿Ø£¬¶øView¾Í͸¹ý½éÃæËù¶¨ÒåµÄ·½·¨È¥³ÊÏÖ½éÃæ¼´¿É¡£µ«Ò²ÒòΪÊÜÏÞÓÚ½éÃæ£¬ËùÒÔPresenterÖ»ÄÜÒÀ½éÃæ¶¨ÒåµÄ¶¯×÷È¥»ØÓ¦Óë´¦Àí£¬¶ø²»ÄÜÔÙ×ö¸ü¶àµÄÑÓÉ칦ÄÜ£¬³ý·Ç¸ü¸ÄViewµÄ½éÃæ¡£

3¡¢MVVM
MVVM£¬MVVMµÄ¼Ü¹¹Ò»ÑùÊÇM, V·ÖÀ룬µ«ÖмäÊÇÒÔVM (ViewModel)À´´®½Ó£¬Õâ¸öViewModel±È½ÏÏñÊÇViewµÄÒ»¸ö´úÀí³Ìʽ£¬Ëü¸ºÔðÖ±½Ó¶ÔModel×ö¹µÍ¨£¬¶øView¿ÉÒÔ͸¹ýһЩ»úÖÆ(ex:
Events, Two-way Databindings, ¡)À´ºÍViewModel¹µÍ¨ÒÔÈ¡µÃ×ÊÁÏ»ò½«×ÊÁÏÅ׸øModel×ö´æÈ¡µÈ¹¤×÷£¬ViewModelÒ²¿ÉÒÔ×÷ΪºÍÍⲿϵͳµÄ´úÀí³Ìʽ£¬ÀýÈçWeb
Service»òÊÇREST Service»òÊÇEnterprise ServicesµÈµÈ£¬²»¹ýËüºÍMVC²»Í¬µÄµØ·½£¬¾ÍÊÇViewModelºÍViewµÄð¤ºÏ¶È±È½Ï¸ß£¬ÒòΪView±ØÐëҪ͸¹ýViewModel²Å¿ÉÒÔÈ¡µÃModel£¬¶øViewModelÓÖ±ØÐëÒª´¦ÀíÀ´×ÔViewµÄ֪ͨѶϢ£¬ËùÒÔËäȻְÔðÒ»Ñù·ÖÃ÷£¬µ«ÊÇÈ´²»ÏñMVCÄÇÑù¿ÉÒÔÀ©Õ¹µ½Õû¸öϵͳԪ¼þ¶¼ÄÜÓá£Èç¹ûMVVMÒªºÍMVP±È½ÏµÄ»°£¬MVVM»á±ÈMVP¸üÁé»îÒ»µã¡£


×ܽáMVVM£º
1£©µÍñîºÏ¡£ÊÓͼ£¨View£©¿ÉÒÔ¶ÀÁ¢ÓÚModel±ä»¯ºÍÐ޸ģ¬Ò»¸öViewModel¿ÉÒ԰󶨵½²»Í¬µÄ¡±View¡±ÉÏ£¬µ±View±ä»¯µÄʱºòModel¿ÉÒÔ²»±ä£¬µ±Model±ä»¯µÄʱºòViewÒ²¿ÉÒÔ²»±ä¡£
2£© ¿ÉÖØÓÃÐÔ¡£Äã¿ÉÒÔ°ÑһЩÊÓͼÂß¼·ÅÔÚÒ»¸öViewModelÀïÃæ£¬ÈúܶàviewÖØÓÃÕâ¶ÎÊÓͼÂß¼¡£
3£© ¶ÀÁ¢¿ª·¢¡£¿ª·¢ÈËÔ±¿ÉÒÔרעÓÚÒµÎñÂß¼ºÍÊý¾ÝµÄ¿ª·¢£¨ViewModel£©£¬Éè¼ÆÈËÔ±¿ÉÒÔרעÓÚÒ³ÃæÉè¼Æ£¬Ê¹ÓÃExpression
Blend¿ÉÒÔºÜÈÝÒ×Éè¼Æ½çÃæ²¢Éú³Éxaml´úÂë¡£
4£©¿É²âÊÔ¡£½çÃæËØÀ´ÊDZȽÏÄÑÓÚ²âÊԵ쬶øÏÖÔÚ²âÊÔ¿ÉÒÔÕë¶ÔViewModelÀ´Ð´¡£
ÓÉÉÏÃæ¸÷¸ö¼Ü¹¹µÄÌÖÂÛ£¬ÎÒÃÇ¿ÉÒԵõ½ÒÔϵĽá¹û£º
4¡¢×ܽáÈýÖּܹ¹£º
MVC ¼Ü¹¹ÊʺÏÓÚ´óÐÍϵͳ£¬Ëü¿ÉÒÔ·Ö²ãÇÒ¿ÉÒÔÔÚʵÌå²ãÃæÇиîΪ²»Í¬µÄ»úÆ÷»ò·þÎñ£¬Ö»Òª±Ë´Ë¼ä¾ßÓÐÊʵ±µÄͨѶж¨¼´¿É¡£
MVVM ¼Ü¹¹ÊʺÏÏñXAML ÕâÖÖÓë³ÌʽÂëÎÞ¹Ø(code ignorance) µÄʹÓÃÕß½éÃæÉè¼Æ£¬Ö»ÒªView
ÖÐÏÂÌØ¶¨µÄÖ¸ÁîÓëViewModel ´®½Ó£¬¾Í¿ÉÒÔÏíÓÐViewModel ¹µÍ¨µÄ¹¦ÄÜ£¬¶øViewModel
Ö»Ðè×öÒ»Ð©ÌØ±ðµÄ½éÃæÊµ×÷£¬¼´¿Éƽ˳µÄºÍView ¹µÍ¨¡£
MVP ¼Ü¹¹Êʺϼ¯ÖÐÓɳÌʽÂë¾ö¶¨View ¶¯×÷µÄÓ¦ÓóÌʽ£¬¶øView Ö»ÐèҪʵ×÷ÌØ¶¨µÄ½éÃæ¼´¿É£¬²»ÐèҪ̫¸´ÔӵŤ×÷£¬µ«Presenter
Ôò¿ÉÄÜ»áÊÜÏÞÓÚView ½éÃæµÄ¶¯×÷£¬¶øÎÞ·¨×ö¸ü½øÒ»²½¶ÔView µÄ¿ØÖÆ¡£
5¡¢Ð¡½á
ÔÚAndroid¿ª·¢ÖÐÔÓеÄMVC£¨Activity+layout£©Ä£Ê½Ô½À´Ô½²»ÊÊÓã¬Ê×ÏÈ£¬ÊÓͼÂß¼ºÍÒµÎñÂß¼²»·Ö£¬µ¼Ö´úÂëÈÝÒ׳öÎÊÌâ¡¢ÄÑÒԿɳÖÐøÐÔά»¤£»Æä´Î£¬ÓÉÓÚÒµÎñÂß¼»ìÔÚÊÓͼÂß¼ÀïÃæ£¬ÊÓͼ»ù±¾ÎÞ·¨¸´Óã¬layout±¾ÉíÊÇ´úÂëÎļþ£¬µ«ÊÇÓÖ²»ÏñJava´úÂëÄÇÑù¿Éά»¤£¬Áé»î£¬¿ÉÒÔÓÐÂß¼£¬ËùÒÔºÜÉÙ¸´ÓÃlayoutÎļþ£¬ÓоÑéµÄAndroid³ÌÐòÔ±»á¾¡¿ÉÄܱÜÃ⸴ÓÃLayoutÎļþÌØ±ðÊǸ´ÓñðÈËдµÄlayoutÎļþ¡£ËùÒÔ³öÓÚÊÓͼ¸´ÓõÄÄ¿µÄÔÓеÄMVCÒ²²»ÊÊÓã¬MVVM³ÉÁËÒ»ÖÖ±ØÒªµÄÑ¡Ôñ¡£
6¡¢Ç¿µ÷
±¾ÎÄÐèҪ˵Ã÷µÄÊÇAndroid DatabindingÖ»ÊÇÔÚAndroidƽ̨ʵÏÖMVVMµÄÒ»ÖÖ·½Ê½£¬Ç°ÃæËµµÄRoboAndroidÒ²¿ÉÒÔʵÏÖ£»»òÕß¿ª·¢Õß×Ô¼º¶¨ÒåÒ»Ì׿ª·¢¹æ·¶ºÍ¿ò¼Ü£¬Äܹ»½«Android¿ª·¢´óµÀÊÓͼ¡¢Âß¼ÒµÎñ·ÖÀ룬²¢ÊµÏÖÊÓͼ¸ß¶È¿É¸´ÓÃÒ²ÊÇÒ»ÑùµÄ£»RxJavaҲΪ¿ª·¢ÕßÌṩÁËMVVMµÄÄÜÁ¦¡£
£¨1£©RoboBinding£¿
RoboBindingÊÇÒ»¿î»ùÓÚAndroidµÄÊý¾Ý°ó¶¨×é¼þ£¬Ö§³ÖË«Ïò°ó¶¨µÈ£¬±È½Ï³ÉÊ죬ºÍDataBinding
ÀàËÆ£¬ÒòΪDataBinding½è¼øÁËRoboBinding£¬Ä¿Ç°DataBindingÖ»Ö§³Öµ¥Ïò°ó¶¨¡£
ÓëDataBindingÏà±È½Ï£¬ RoboBinding¸üΪ³ÉÊ죬²¢ÇÒÖ§³ÖË«Ïò°ó¶¨£¬µ«ÊÇÒòΪDataBindingÊÇGoogleÇ×¶ù×Ó£¬ÒÔºó¿Ï¶¨»á²»¶Ï¸Ä½ø£¬»á³ÉΪAndroidÐÂÌØÐÔ£¬ËùÒÔ²ÉÓÃDataBinding¿ÉÄܸüÏÖʵ£¬µ«ÊÇÎÒ±¾È˲¢²»ÅųâRoboBinding£¬Í¨¹ýÌåÑéRoboBindingÒ²ºÜ²»´í£¬ÇÖÈëÐÔ²¢²»ÊǺÜÇ¿
£¨2£©RxJava/ RxAndroid £¿
RxJava×îºËÐĵÄÁ½¸ö¶«Î÷ÊÇObservables£¨±»¹Û²ìÕߣ¬Ê¼þÔ´£©ºÍSubscribers£¨¹Û²ìÕߣ©¡£Observables·¢³öһϵÁÐʼþ£¬Subscribers´¦ÀíÕâЩʼþ¡£ÕâÀïµÄʼþ¿ÉÒÔÊÇÈκÎÄã¸ÐÐËȤµÄ¶«Î÷£¨´¥Ãþʼþ£¬web½Ó¿Úµ÷Ó÷µ»ØµÄÊý¾Ý¡£©;Ò»¸öObservable¿ÉÒÔ·¢³öÁã¸ö»òÕß¶à¸öʼþ£¬ÖªµÀ½áÊø»òÕß³ö´í¡£Ã¿·¢³öÒ»¸öʼþ£¬¾Í»áµ÷ÓÃËüµÄSubscriberµÄonNext·½·¨£¬×îºóµ÷ÓÃSubscriber.onNext()»òÕßSubscriber.onError()½áÊø¡£
RxJava¸üΪÁé»î£¬µ«Êǹ۲졢¶©ÔÄÐèÒªÔÚ´úÂëÖÐ×Ô¼ºÊµÏÖ£¬ÇÖÈëÐԱȽÏÇ¿£¬Ò²Ó°Ïì´úÂë¿É¶ÁÐÔ£¬¾ÍĿǰ´úÂëÀ´¿´£¬¸ÄÔìÆðÀ´´ú¼Û·Ç³£´ó¡£ÔÚAndroidÏîÄ¿ÖкÜÉÙʹÓÃRxJava£¬ËäÈ»¹¦ÄܺÜÇ¿´ó£¬½«Âß¼¿´×öÊý¾ÝÁ÷£¬Ò»ÇÐÊý¾ÝÇý¶¯£¬µ«ÊÇ´úÂëÇÖÈëÐÔ̫ǿ£¬²»ÊʺÏÔÚÒµÎñÂß¼¡¢ÊÓͼÂß¼Öдó·¶Î§Ê¹Óᣵ«ÊÇ£¬RxJavaÔÚÊý¾ÝÁ÷¿ØÖÆÖÐȷʵ¾«Ã¿ÉÒÔ½«RxJava°ü×°µ½ÄãµÄ¿ò¼ÜÖУ¬¸ºÔðͬһ¸öActivityÄ£¿é¼äµÄÊý¾ÝÁ÷¿ØÖÆ£¬ÓÃËûʵÏÖÊý¾ÝÊý¾Ý¹²Ïí¡¢ÏûϢͨÐÅ£¬ÒÔÊý¾ÝÇý¶¯£¬½«Æä·â×°µ½¿ò¼ÜÖУ¬»áÊǺܺõÄÑ¡Ôñ¡£
Èý¡¢Android DataBinding·ÖÎö
View ¡ª¡ª LayoutÎļþ£º
ÊÖ¶¯ÔÚLayoutÎļþÖÐʹÓÃModelÊý¾ÝΪ¿Ø¼þ¸³Öµ¡£
ViewModel ¡ª¡ª ViewDataBinding ʵÏÖÀà
DataBinding¿ò¼Ü»á¸ù¾ÝLayout½øÐеÄÊý¾Ý°ó¶¨Çé¿ö×Ô¶¯Éú³É¸ÃÎļþ£¡²»¿É¸Ä¡£ ViewDataBinding¸ºÔð½«ModelµÄÊý¾ÝºÍ¸üÐÂÐÅÏ¢¸³Öµ¸øLayoutÖеĿؼþ£¬´ïµ½µ¥Ïò°ó¶¨Ð§¹û¡£
Model ¡ª¡ª ʵÏÖObservable¡¢ ObservableMap»òObservableList½Ó¿Ú
¸ºÔðÊý¾ÝÂß¼´¦Àí£¬°´Õչ涨µÄ±ê׼дget¡¢set·½·¨£¬²¢Í¨ÖªÊý¾Ý¸üС£¿ò¼Ü»áÔÚModelÄÚ²¿´æ´¢ViewDataBinding
£¬µ±ModelÐèÒª¸üÐÂÊý¾Ýʱ£¬¿ÉÒÔ֪ͨViewDataBinding ʵÏÖ¶ÔView¸üС£ 
1¡¢Àý×Ó´úÂë
£¨1£©Model
public class OrderListItemModel
extends BaseObservable{ //model¼Ì³ÐBaseObservableÀà
private boolean checked; //¶¨ÒåÊôÐÔ?private int checkBoxVisibility;
//¶¨ÒåÊôÐÔ
@Bindable //×¢½â£¬Ö§³Ö×Ô¶¯¸üÐÂ
public boolean getChecked() {? return checked;?
}??@Bindable?public void setChecked(boolean
checked) {? this.checked = checked;
//֪ͨOrderListItemModel ÖеÄViewDataBinding£¬¸üÐÂcheckedÊôÐÔ?
notifyPropertyChanged(BR.checked);
} |
£¨2£©Layout£¨View£©
ÉùÃ÷±äÁ¿
<layout? xmlns:android= s¡°http://schemas.android.com/apk/res/android¡±?
xmlns:dp=¡°http://schemas.android.com/apk/res-auto¡±?
>? <data>? <variable? name=¡°itemMode¡±?
type= ¡°com.dianping.tuan.ViewModel.OrderListItemModel¡±>?
</variable>? </data>
°ó¶¨Êý¾Ý
<CheckBox? android:id= ¡°@+id/check¡± ? android:layout_width=¡°wrap_content¡±?
android:layout_height= ¡°wrap_content¡± ? android:layout_gravity=¡°center_vertical¡±?
android:button =¡°@drawable/rad_bg¡± ? android:checked= ¡°@{itemMode.checked}¡±
//°ó¶¨checked ? android:visibility= "@{itemMode.checkBoxVisibility}¡°
//°ó¶¨Visibility? android:clickable= "false"?
android:paddingRight =" 10dp " /> |
£¨3£©ViewModel £¨ÇÅÁº£©¡ª¡ª ViewDataBinding
ViewDataBindingÎļþÊÇ¿ò¼Ü¸ù¾ÝlayoutÎļþºÍmodel×Ô¶¯Éú³ÉµÄ£¬ÎÞ·¨Ð޸ġ£TuanOrderCommonItem2BindingÀà¾ÍÊÇ¿ò¼Ü×Ô¶¯Éú³ÉµÄViewModel£¬¸¸ÀàÊÇViewDataBinding£¨³éÏóÀࣩ£¬ÊÇÔÚViewDataBindingÀàÖÐÍê³É°ó¶¨¡£
public class TuanOrderCommonItem2Binding extends
android.databinding.ViewDataBinding {
this.check = (android.widget.CheckBox) bindings[1];//´æ´¢LayoutÖеĿؼþ
private com.dianping.tuan.Model.OrderListItemModel
mItemMode; //´æ´¢ModelÊý¾Ý
// read checked~.~ itemMode ~
if ( itemMode != null)
{
checkedItemMode = itemMode.isChecked(); //»ñÈ¡ItemModeÖеÄÊý¾Ý
}
if ((dirtyFlags & 0b11L) != 0)
{
this.check.setChecked(checkedItemViewMode); //½«Êý¾Ý¸³Öµ¸ø¿Ø¼þ
}
¡¡¡¡¡¡¡¡ |
2¡¢ModelÈçºÎ֪ͨViewDataBinding¸üÐÂView£¿
¿ò¼Üͨ¹ý¹Û²ìÕßģʽ£¬Òì²½¸üнçÃæ£¡ÎÒÃÇ¿´µ½¹ý³Ì·Ç³£¸´ÔÓ£¬×î¹Ø¼ü£¬Êý¾Ý¸üеĹý³ÌÊÇÒì²½µÄ£¬Õâ¿ÉÒÔ±ÜÃâANR£¬µ«ÊÇЧÂÊÄØ£¿Èç¹ûÊÇÊý¾ÝÁ¿±È½Ï´óµÄÁбí»òÕ߱ȽÏÖØµÄÖ÷½çÃæ£¬Ê¹ÓÃÊý¾Ý°ó¶¨ºÏÊÊÂð£¿

ËÄ¡¢Android Databing×ܽá
±¾ÎIJ»ÊÇÀ´ÎªAndroid Databing¸è¹¦Ë̵µģ¬ÈçºÎʹÓÃÒ»Ïîм¼ÊõÐèÒªÖǻۣ¬ÔÚÎÒÃÇδÍêÈ«Á˽âËüʱ£¬×îºÃ½÷É÷µÄÔÚ¹¤³ÌÏîÄ¿ÖÐʹÓá£×îºóÂÞÁÐһЩ×Ô¼º¶ÔAndroid
DatabingµÄ×ܽᣬÆäÖпÉÄÜÓв»ÍêÉÆ»ò²»³ÉÊìµÄµØ·½£¬Ï£Íû´óÅ£ÃÇÅúÆÀÖ¸Õý¡£Èç¹û¶ÁÕßÏëÔÚ×Ô¼º¿ª·¢µÄAPPÖÐʹÓÃAndroid
Databing£¬Ï£ÍûÄã¶ÔËüÓÅȱµãÓÐ×ã¹»µÄÁ˽⣬Óгä×ãµÄ˼Ïë×¼±¸¡£
Óŵ㣺
1¡¢×Ô¶¯»¯°ó¶¨+MVVMÓŵã
2¡¢Ê¹ÓÃDataBindingºó£¬ÎÞÐèÖ±½Ó»ñÈ¡¡¢²Ù×÷ÊÓÍ¼ÔªËØ£¬Äܹ»°ïÖú Activity»òFragment¼õÉÙ¶ÔÊÓͼ¿ØÖƵĴúÂëÁ¿
²»×㣺
1¡¢Ä¿Ç°Ö»Ö§³Öµ¥Ïò°ó¶¨£»
2¡¢ViewModelÓëViewÒ»Ò»¶ÔÓ¦£»
3¡¢Ê¹ÓÃÆðÀ´Áé»îÐԱȽϵͣ»
4¡¢ModelÊôÐÔ·¢Éú±ä»¯Ê±£¬ViewDatabinding²ÉÓÃÒì²½¸üÐÂÊý¾Ý£¬¶ÔÓÚÏÖʵ´óÁ¿Êý¾ÝµÄListView£¬»áÓÐÒ»¶¨ÑÓ³Ù£¬ÔÚʵ¼ù²âÊÔÖз¢ÏÖ£¬DatabingЧÂʽϵͣ¬¶ÔÓÚ¸ºÔðµÄ½çÃæ²»Ì«ÊÊÓã»
5¡¢×Ô¶¯Éú³É´óÁ¿´úÂëºÍÊôÐÔ×ֶΣºViewDataBinding ʵÏÖÀà DataBinderMapper
µÈ |