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

您的位置:首頁技術文章
文章詳情頁

解決android viewmodel 數據刷新異常的問題

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

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

談正題:adroid mvvm開發模式 之 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); /* 注冊數據變更監聽*/ 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>();.../*更改綁定數據*/model.addContacts(list);

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

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

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

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

補充知識:使用Android DataBinding時發現只能顯示一次,不能動態更新數據

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

剛開始使用 dagger2 + DataBinding 的結構,很多東西也不是很清晰。

現象

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

通過三個Fragment共同使用Activity的ViewModel來實現數據共享。

但是最后出現個現象就是只有剛進入頁面時,ViewModel中的數據會顯示在視圖上。

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

解決android viewmodel 數據刷新異常的問題

原因

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

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

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

解決1

通過靜態代碼塊的方式實現了 ViewModel 的單例

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

解決2(失敗了)

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

報錯:AppComponent has a @Singleton

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

解決android viewmodel 數據刷新異常的問題

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

解決3

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

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

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

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

標簽: Android
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
奇米777国产一区国产二区| 久久午夜精品| 久久久9色精品国产一区二区三区| 欧美日韩国产高清| 奇米亚洲欧美| 欧美一区二区三区久久| 国产一级成人av| 国产精品免费不| 99国产精品99久久久久久粉嫩| 国产免费成人| 日本欧美在线| 亚洲毛片在线| 99国产精品久久久久久久| 99在线|亚洲一区二区| 亚洲我射av| 国产日本精品| av资源中文在线| 欧美一级久久| 国产精品xxxav免费视频| 亚洲成人不卡| 一区二区国产在线观看| 夜夜精品视频| 日韩三级精品| 日本在线成人| 美女av一区| 青草国产精品久久久久久| 国产精品白浆| 日日摸夜夜添夜夜添国产精品| 91精品丝袜国产高跟在线| 正在播放日韩精品| 国产一级一区二区| 免费一区二区三区在线视频| 夜久久久久久| 国产精品欧美日韩一区| av最新在线| 国产精品99视频| 黄色亚洲在线| 国产精选一区| 中文一区一区三区高中清不卡免费| 国产精品密蕾丝视频下载| 国产视频亚洲| 激情婷婷综合| 另类专区亚洲| 91午夜精品| 午夜一级久久| 亚洲精品在线影院| 日本视频在线一区| 亚洲一区二区成人| 色婷婷久久久| 久久精品国产999大香线蕉| 成人精品中文字幕| 日本国产亚洲| 亚洲一区国产| 亚洲性色av| 日韩精品电影| 国产精品sss在线观看av| 97精品视频在线看| 日本蜜桃在线观看视频| 日韩成人午夜精品| 老司机精品久久| 婷婷激情久久| 麻豆精品视频在线| 欧美精品国产| 日韩激情视频网站| 西西人体一区二区| 中文字幕亚洲在线观看| 久久九九国产| 欧美午夜不卡| 国产高清精品二区| 精品免费在线| 伊人精品一区| 成人va天堂| 免费一区二区三区在线视频| 欧美成人精品三级网站| 激情欧美一区二区三区| 日韩成人综合| 免费毛片在线不卡| 亚洲网址在线观看| 亚洲伦乱视频| 91精品国产自产在线观看永久∴ | 欧美一级精品| 国产成人免费视频网站视频社区| 日韩高清欧美激情| 日韩国产欧美在线播放| 91麻豆精品| 美腿丝袜在线亚洲一区| 国产综合婷婷| 亚洲精选91| 精品国产aⅴ| 日韩av在线播放网址| 国产韩日影视精品| 中文字幕在线免费观看视频| 亚洲欧美一区在线| 国产日韩亚洲| 在线一区免费观看| 久久精品电影| 伊人久久婷婷| 欧美性www| 国产在线成人| 精品一区视频| 日韩精品a在线观看91| 欧美日韩中文一区二区| 国产精品一区二区av日韩在线| 国产精品久久乐| 久久国产福利| 欧美不卡高清一区二区三区| 久久午夜精品| 精品久久久久中文字幕小说| 视频一区视频二区在线观看| 麻豆精品在线播放| 亚洲一区亚洲| 日韩福利视频一区| 国产高潮在线| 欧美啪啪一区| 亚洲精品第一| 久久精品国产99久久| 91精品在线观看国产| 美女一区网站| 国产精品多人| 亚洲不卡视频| 久久人人88| 亚洲欧美日韩高清在线| 日韩欧美视频专区| 91精品丝袜国产高跟在线| 好吊视频一区二区三区四区| 人人草在线视频| 天堂精品久久久久| 蜜桃视频一区二区三区| 亚洲综合欧美| 亚洲专区视频| 国产日韩一区| 欧美xxxx中国| 国产精品大片| 亚洲免费一区三区| 美女精品久久| 欧美激情网址| 精品久久97| 久久精品三级| 毛片不卡一区二区| 免费在线播放第一区高清av| 国产一区调教| 欧美激情 亚洲a∨综合| 国产精品黄色片| 高清一区二区三区| 日韩视频网站在线观看| 免费视频一区二区三区在线观看| 91精品国产乱码久久久久久久 | 欧美网站在线| 欧美成人综合| 视频一区二区三区中文字幕| 欧美亚洲综合视频| 丝袜美腿诱惑一区二区三区 | 久久婷婷av| 一区二区三区四区在线观看国产日韩| 亚洲精品乱码| 天堂中文av在线资源库| 欧美男人天堂| 丝袜美腿高跟呻吟高潮一区| 国产精品久久久久久久久免费高清| 久久精品理论片| 国产精品成人一区二区网站软件| 成人黄色av| 日韩免费av| 国产农村妇女精品一二区| 国产精品1区| 日韩国产欧美一区二区| 国产一区日韩| 久久精品123| 日韩精品一区二区三区中文在线 | 91久久亚洲| 国产探花一区| 国产va免费精品观看精品视频| 欧美中文高清| 免费视频亚洲| 免费看av不卡| 天堂va欧美ⅴa亚洲va一国产| 91欧美在线| 视频在线观看91| 日韩综合在线| 日本不卡视频在线观看| 久久久久国产精品一区三寸| 日韩高清在线不卡| 日本精品不卡| 国产aⅴ精品一区二区三区久久| 影音先锋久久| 热久久久久久久| a天堂资源在线| 欧美成人一二区| 国产精品美女在线观看直播| 中文字幕日韩高清在线| 婷婷成人在线| 精品丝袜在线| 国产精品毛片视频| 国产精品久av福利在线观看| 久久国产免费看| 国产精品一区二区三区美女| 久久这里只有| 伊人久久在线| 成人精品高清在线视频| 97精品国产福利一区二区三区|