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