日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

解決android viewmodel 數(shù)據(jù)刷新異常的問題

瀏覽:208日期:2022-09-25 11:39:41

3年的wpf開發(fā)經(jīng)驗,自認為對數(shù)據(jù)驅(qū)動UI開發(fā)模式的使用不是問題,但當開始研究android的mvvm模式開發(fā)時,發(fā)現(xiàn)兩年多的android開發(fā)經(jīng)驗已經(jīng)將之前的wpf開發(fā)忘得7788了。感慨一下:人老了,記憶力就這么脆弱。

談?wù)}:adroid mvvm開發(fā)模式 之 viewmodel使用小麻煩。

viewmodel

public class MyViewModel extends ViewModel { private MutableLiveData<List<User>> mUserList; public MutableLiveData<List<User>> getUserList(){ if(mUserList == null){ return new MutableLiveData<List<User>>(); } return mUserList } public void addContacts(List<User> list){ if(mUserList.getValue() == null){ mUserList.setValue(list); }else{ mUserList.getValue().addAll(list); mUserList.setValue(mUserList.getValue()); } }}

Activity

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); /* 注冊數(shù)據(jù)變更監(jiān)聽*/ model = ViewModelProviders.of(this).get(MyViewModel.class); model.getUserList().observe(this, list -> { Log.i(TAG, 'getUserList size:' + list.size()); });}......List<User> list = new ArrayList<User>();.../*更改綁定數(shù)據(jù)*/model.addContacts(list);

以上是錯誤簡寫代碼,讓我百撕不得姐啊!

嘗試好多方法監(jiān)聽中的log始終不得見,最后一次嘗試將viewmodel中的List<>改成了Integer,直接在定義類型時初始化,發(fā)現(xiàn)好用。思量之后發(fā)現(xiàn)代碼中的神來之筆額

if(mUserList == null){ return new MutableLiveData<List<User>>(); } return mUserList

兩個return 返回的不是一個對象! 無語,撕了大半天終得解!

補充知識:使用Android DataBinding時發(fā)現(xiàn)只能顯示一次,不能動態(tài)更新數(shù)據(jù)

本文只是記錄解決錯誤的過程,可能起不到分享的意義。

剛開始使用 dagger2 + DataBinding 的結(jié)構(gòu),很多東西也不是很清晰。

現(xiàn)象

一個頁面有三塊布局,我使用一個Activity搭配三個Fragment實現(xiàn)。

通過三個Fragment共同使用Activity的ViewModel來實現(xiàn)數(shù)據(jù)共享。

但是最后出現(xiàn)個現(xiàn)象就是只有剛進入頁面時,ViewModel中的數(shù)據(jù)會顯示在視圖上。

通過點擊事件更新ViewModel中 ObservableField 對象中的數(shù)據(jù),并不會刷新視圖。

解決android viewmodel 數(shù)據(jù)刷新異常的問題

原因

千辛萬苦找到了是因為在項目中使用了 Dagger2

在給三個Fragment注入 Activity的 ViewModel 時,實際上是注入了三個 ViewModel 對象

導致每個Fragment的binding綁定的ViewModel都是不同的,自然不會有什么聯(lián)系

解決1

通過靜態(tài)代碼塊的方式實現(xiàn)了 ViewModel 的單例

在 module 中 @Provide修飾的方法中,返回的是單例模式的 ViewModel

解決2(失敗了)

在 Activity 的 module 中 @Provide修飾的方法上再加上個 @Singleton

報錯:AppComponent has a @Singleton

原因:@Singleton 在 AppComponent 上聲明了,@Singleton 并不是設(shè)計模式中的單例模式,而是 Dagger2 為了保證 module 提供的產(chǎn)品,在一個 Scope (Component)中,只有一個對象的標簽。

解決android viewmodel 數(shù)據(jù)刷新異常的問題

如上,表示了三個 Module 類在 AppComponent 這個scope中是單例的

解決3

既然外層已經(jīng)使用了 @Singleton ,那么我們可以自定義一個注解來表示一個 scope

創(chuàng)建注解:@NewPesticideSingle (名字任意)

標注在 Module 和對應的 Component 中即可

以上這篇解決android viewmodel 數(shù)據(jù)刷新異常的問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。

標簽: Android
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩影院精彩在线| 麻豆成人av在线| 黄色aa久久| 日韩国产欧美| 色老板在线视频一区二区| 三级小说欧洲区亚洲区| 狠狠色综合网| 日韩精品国产精品| 欧美韩一区二区| 日韩国产一区| 免费黄色成人| 国产毛片一区| 日本不卡一区二区三区| 国产欧美日本| 美日韩一区二区三区| 夜鲁夜鲁夜鲁视频在线播放| 欧洲亚洲一区二区三区| 亚洲激情欧美| 国产日韩在线观看视频| 91精品韩国| 亚洲人亚洲人色久| 久久伊人亚洲| 香蕉精品久久| 日韩中文一区二区| 精品国产乱码久久久| 伊人久久大香线蕉av不卡| 蜜臀av性久久久久蜜臀aⅴ流畅 | 国产在线|日韩| 欧美专区在线| 免费观看亚洲天堂| 欧美日韩日本国产亚洲在线 | 久久精品国产久精国产| 欧美日韩中文字幕一区二区三区| 一区二区国产在线观看| 美腿丝袜亚洲一区| 欧美日韩免费观看一区=区三区 | 精品国产乱码| 亚洲一区二区三区高清不卡| 欧美激情久久久久久久久久久| 99久久久久| 国产精品久久久久久久久久白浆| 国产综合欧美| 精品一区二区三区四区五区| 午夜久久影院| 麻豆理论在线观看| 婷婷亚洲精品| 亚洲午夜91| 国产毛片一区二区三区| 欧美午夜精彩| 日韩国产欧美一区二区三区| 久久精品观看| 国产丝袜一区| 亚洲欧美日本国产专区一区| 国产第一亚洲| 91精品丝袜国产高跟在线| 欧美日韩一区二区综合| 国产精品欧美日韩一区| 悠悠资源网久久精品| 国产一区二区三区四区大秀| 中文字幕亚洲影视| 欧美日中文字幕| 荡女精品导航| 人人精品久久| 亚洲精品观看| 久久久久久久久丰满| 国产黄色精品| 911亚洲精品| 美女精品在线观看| 亚洲h色精品| 国产一区二区三区网| 欧美自拍一区| 亚洲精品乱码| 男女性色大片免费观看一区二区 | 国产66精品| 欧美一级网址| 伊人久久一区| 午夜久久美女| 欧美日韩国产欧| 亚洲午夜在线| 久久久久99| 欧产日产国产精品视频| 精品国产欧美| 国产精品1区| 国产亚洲一区| 国产日韩亚洲欧美精品| 日韩激情啪啪| 日韩视频1区| 亚洲最大av| 亚洲影视一区| 另类激情亚洲| 亚洲深爱激情| 亚洲一区二区三区高清不卡| 亚洲激情二区| 男女性色大片免费观看一区二区 | 亚洲精品激情| 亚洲精品一区二区在线播放∴| 999在线观看精品免费不卡网站| 色爱av综合网| 久久精品国产68国产精品亚洲| 欧美aa一级| av中文字幕在线观看第一页| 久久久久久久欧美精品| 欧美香蕉视频| 亚洲成人不卡| 91精品精品| 亚洲va中文在线播放免费| 亚洲www免费| 黄色成人91| 日本中文字幕不卡| 国产探花在线精品一区二区| 欧美日韩一区自拍| 欧美久久香蕉| 精品视频自拍| 日韩免费视频| 一区二区亚洲精品| 蜜桃av一区二区| 久久精品凹凸全集| 国产在视频一区二区三区吞精| 日韩大片在线观看| 国产农村妇女精品一二区| 亚洲欧美日本国产| 久久在线91| 一区二区小说| 日韩一区精品| 国产91欧美| 日韩亚洲国产欧美| 婷婷精品在线观看| 久久精品亚洲| japanese国产精品| 日日夜夜免费精品视频| 精品国产亚洲一区二区三区大结局| 精品三级久久| 天堂精品久久久久| 超级白嫩亚洲国产第一| 黄色亚洲在线| 国产欧美高清| 亚洲v在线看| 青青草国产成人99久久| 色欧美自拍视频| 亚洲一区二区av| 精品美女在线视频| 久久国产精品成人免费观看的软件| 日韩制服丝袜av| 国产aⅴ精品一区二区四区| 91久久黄色| 久久影视三级福利片| 亚洲尤物在线| 国产成人a视频高清在线观看| 国产精品日韩久久久| 美女精品视频在线| 性色av一区二区怡红| 精品美女在线视频| 免费观看在线综合色| 日韩欧美中文| 欧美伊人影院| 黄色精品网站| 国产精品超碰| 亚洲免费网址| av高清不卡| 欧美日韩精品一区二区三区视频 | 一区二区三区网站| 天堂av在线| 国产一卡不卡| 亚洲免费在线| 日韩欧美少妇| 欧美aaaaaa午夜精品| 亚洲欧美日本国产| 亚洲www啪成人一区二区| 青青青国产精品| 亚洲免费成人| 人在线成免费视频| 国产欧美日韩精品高清二区综合区| 亚洲二区精品| 国产中文字幕一区二区三区| 日韩激情网站| 美日韩精品视频| 国内亚洲精品| 日韩国产在线| 精品日产乱码久久久久久仙踪林| 最新国产精品久久久| 秋霞影视一区二区三区| 久久99精品久久久久久园产越南| 亚洲一区激情| 久久国产中文字幕| 国产suv精品一区二区四区视频| 日韩精品福利一区二区三区| 亚洲自啪免费| 婷婷亚洲综合| 99久久亚洲精品| 精品捆绑调教一区二区三区| 精品久久99| 成人午夜在线| 国产66精品| 福利一区二区| 麻豆91精品91久久久的内涵| 欧美午夜三级| 国产日韩视频| 日本午夜精品久久久| 一区二区精彩视频| 蜜臀va亚洲va欧美va天堂|