-
步驟
查看全部 -
mvvm
查看全部 -
備注:
查看全部 -
Mvp
查看全部 -
M層負責從數據庫中獲取數據
查看全部 -
mvc 形式? ?Controller 持有Model 先Model 傳遞數據,而Model向View傳遞數據 一般使用Callback的形式
查看全部 -
根據項目來選擇,學會變通,簡單的頁面可以不使用框架或使用MVC,建議多使用插件或自定義插件,減少重復代碼
查看全部 -
學好 DataBinding、LiveData
查看全部 -
1、
2、
3、
在布局文件中聲明
在Activity中初始化
在布局文件中使用
ViewModel中實現getData方法
3、
再創建一個構造器,將Binding對象傳值過來,可以調用輸入的內容
在viewModel中直接使用dataBinding來操作,這樣不是很好
改進:
1、將輸入框與viewModel.userInput綁定,并且實現雙向綁定,
android:text="@={viewModel.userInput}"
2在viewModel中提供userInput變量
所以在使用的時候,不需要使用dataBinding獲取userInput,直接使用userInput變量
有時候,有些操作需要在Activity中完成,實現方式很多
1、借助三方庫,EventBus/RxBus,但不夠好
2、建議使用LiveData+ViewModel的形式
查看全部 -
1、啟動DataBinding
在App下的build.gradle的android層級下,添加
dataBinding{ ????enabled?=?true }
2、修改布局文件為DataBinding布局
選中最外層的布局控件,同時按下Alt+回車,選擇Convert to data binding layout
原來的Activity
可以修改為
在布局文件中的layout-data下聲明變量
在相應位置使用,還可以在其中使用拼接,注:在大括號中還包含字符串的話 需要使用單引號
android:tex="@{account.name}"
對account進行初始化
拓展:
點擊按鈕為level+1
1、聲明activity變量
2、按鈕中添加點擊事件,引用activity的onClick事件
3、Activity中設置activity
dataBinding.setActivity(this);
4、實現onClick方法
優化:
每次點擊都會調用setLevel
在Bean中 extends BaseObservable
對getLevel()添加@Bindable注解
在setLevel()方法中添加刷新,BR類似R,是DataBinding為我們自動生成的
以上為單向綁定
雙向綁定:
在視圖中,@后增加=,表示雙向綁定,即視圖更新也會更新數據,數據更新也會刷新視圖
雙向綁定一般用于輸入框
查看全部 -
與MVP的思想相似,但代碼更簡潔
查看全部 -
1、
創建一個interface IMVPModel 里面創建三個方法,分別是獲取數據、數據獲取成功、數據獲取失敗
MVPAvtivity implements IMVPModel,并實現這三個方法,完成其中的邏輯處理
2、
創建MVPModel
他需要獲取接口中的數據
3、
創建一個MVPPresenter,持有view層和Model層的引用
4、MVPActivity中創建一個presenter的實例
prenster中實現一個獲取數據的方法getData(),在實際操作時,Activity中presenter.getData()
查看全部 -
在MVP中,這種情況得到了很好的解決
查看全部 -
所以也可以將View和Controller混合放在一起,形成下圖的情況
查看全部 -
解決第二點,是可以在Activity中創建一個Model的實例,拿著實例去調用接口方法,然后再去分別實現不同情況下的處理通知頁面更新操作的方法。
查看全部 -
箭頭表示的是事件的傳遞方向
查看全部 -
最終失效效果:
具體實現部分截圖
使用此種方式,將所有內容都放在了NormalActivity.java頁面中,承載了頁面展示、邏輯處理、接口調用等
項目越來越大,越復雜的話,會越來越多。
使用MVC模式優化,下節繼續、
查看全部 -
在應用和面試中經常被問到。
查看全部 -
【MVVM優缺點】
?-優點 :
?實現了數據和視圖的雙向綁定,極大的簡化代碼
? ?1.減少了接口數量 2.告別繁瑣findViewById操作
?-缺點 :
? ?bug難以調試,并且dataBinding目前存在一些編譯問題
【建議】建議DataBinding和LiveData結合使用
? ?-DataBinding是實現MVVM模式數據綁定的工具;
? ?-LiveData是解決MVVM之間的通信問題,且可感知組件的生命周期,可有效避免內存泄漏。查看全部 -
使用MVVM實現需求步驟:
1. 提供View,ViewModel以及Model三層
2. 將布局修改為DataBinding布局
3. View與ViewModel之間通過DataBinding進行通信
4. 獲取數據并展示在界面上
查看全部 -
使用MVM實現需求
查看全部 -
雙向綁定?視圖發生變化,一般是EditView,在@后面加上 = 號即可。
查看全部 -
對象Bean繼承 android.databinding.BaseObservable
設置@Bindable 注解,等級發生變化的時候自動更新
設置 notifyPropertyChanged(BR.level),當值發生變化是通知視圖更新。
查看全部 -
DataBinding使用三步驟?
1啟用 DataBinding
? 在app的buid.gradle 中 android{}下 添加如下代碼
dataBinding{ ????enabled?=?true }
2. 將傳統布局文件,修改為支持 DataBinding
選中最外層布局文件—按住【ALT+ENTER】—選擇?Convert?on?data?binding?layout? ???這個步驟后將會生成ActivityDemoBing?(ActivityDemoBinding生成規則就是布局文件變成大寫再拼接一個Binding就是其類名)
3. 數據綁定 @{}
1.修改Activity ???onCreate()中移除?setContentView() ???而是?DataBingdingUtil.setContentView(Activity.this,R.layout.activity_demo) ???然后將得到?ActivityDemoBinding?binding實例。 ??現在可以直接通過binging.控件id,對控件進行操作了(告別了繁瑣的findViewById) 2.來到布局文件中—可見到最外層為layout、layout下包含了<data/>節點以及傳統布局文件; ??在data節點中可聲明對象?<data><variable?name?=?"account"?type="Account"/></data> ???聲明好后,在不居中可直接使用。如在TextView中?text=?"@{account.name+'hello'+account.level}" ???//ps.如果在大括號中若需要拼接字符串,這里使用單引號?''
查看全部 -
DataBinding是什么?
DataBinding是谷歌發布的一個實現數據綁定的框架(實現數據與視圖雙向綁定)它可以幫助我們在安卓中更好地實現MVVM模式。
查看全部 -
111111
查看全部 -
對框架的使用要靈活使用。
建議使用一些插件一鍵生成代碼等。
查看全部 -
MVVM優缺點
要向用好MVVM要先把DataBinding和LiveData學好。
查看全部 -
LiveData + ViewModel
查看全部
舉報