亚洲欧美日韩熟女|做爱高潮视频网址|国产一区二区三级片|国产Av中文字幕www.性色av|亚洲婷婷永久免费|国产高清中文字幕|欧美变态网站久re视频精品|人妻AV鲁丝第一页|天堂AV一区二区在线观看|综合 91在线精品

Android databinding的接入使用與詳解(一)

2023-04-12


一、介紹


DataBinding 是Google Android組件框架,管理view和data之間進行綁定。DataBinding主要管理數(shù)個布局文件,這樣我們就不用去實例化layout的view。直接通過DataBindingUitl來完成初始化。


這樣可以精簡代碼,也減少工作量,避免view的空指針等。大量減少Activity/fragment模塊內(nèi)的代碼,DataBinding 將數(shù)據(jù)實現(xiàn)單向或雙向綁定到 layout 文件中,有助于防止內(nèi)存泄漏,而且能自動進行空檢測以避免空指針。


二、如何使用


1、引入DataBinding的庫

只要在模塊的build文件下,android{}節(jié)點內(nèi),新增如下




dataBinding {
    enabled = true
}



這樣就開啟了dataBinding庫,同步一下項目,將庫同步到本地


2、布局的創(chuàng)建與布局文件生成

1.新建一個布局文件叫:layout_databinding_simple

關(guān)于DataBinding綁定layout的有兩種方式


第一種:IDE自動完成


將鼠標(biāo)移到布局代碼上,會有黃色燈提示,然后選擇Convert to data binding layout


IDE工具將會把layout的布局自動完成轉(zhuǎn)碼




第二種:手動完成


把根布局換成layout,然后原來的root布局不變,在布局頂部新增data節(jié)點





    

        
    

    

        
    

3、布局文件生成對應(yīng)的代碼文件

布局設(shè)置好后,IDE會自動生成對應(yīng)的文件


layout name:layout_databinding_simple


生成文件名:LayoutDatabindingSimpleBinding,格式就是布局文件名后綴接Binding


注意:關(guān)于這個文件生成,好多技術(shù)博客并沒有介紹,只是簡單的說了一句,導(dǎo)致好多新手找不到后綴為Binding的文件。



手動設(shè)置data生成的文件名



    

只要在data節(jié)點下,設(shè)置class的name,data會生成用戶自定義的文件,否則會采用系統(tǒng)默認(rèn)方法。


lateinit var data:MyTestData;

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        data=DataBindingUtil.setContentView(this, R.layout.layout_databind_data)
    }

4、加載布局文件,生成對應(yīng)的控制器

通過DataBindingUtil工具類完成view的設(shè)置與加載




var databinding = DataBindingUtil.setContentView(
    this,
    R.layout.layout_databinding_simple
)



1.setContentView

T:泛型直接傳布局layout生成的對應(yīng)類LayoutDatabindingSimpleBinding,


加載完后,view 已完成了初始化,包括內(nèi)部,直接通過databinding管理view和data


5、ViewDataBinding介紹



ViewDataBinding是view和data的管理類,如果你在




如果你在layout中有一個TextView id為 textname,那么直接就可以databinding.textname獲取對象


如果你在layout data數(shù)據(jù)節(jié)點下有一個name 為name的節(jié)點,可以通過databinding.setName()設(shè)置數(shù)據(jù)源


在layout中綁定的數(shù)據(jù),都是通過ViewDataBinding來設(shè)置與更新的


1.更新數(shù)據(jù)



2.獲取view

獲取的view,直接關(guān)聯(lián)到對應(yīng)的id,如果沒有申明id,那么將不會出現(xiàn)在binding中


5、數(shù)據(jù)綁定

數(shù)據(jù)源的綁定至關(guān)重要,離開數(shù)據(jù)源,view也沒有什么實際價值。


如何簡單的綁定數(shù)據(jù)源呢?


1.設(shè)置數(shù)據(jù)源

簡單類型,復(fù)雜類型,用戶自定義,簡單類型,在Java.lang包下,無須導(dǎo)入,可以直接使用,非簡單內(nèi)容,在使用時都需要導(dǎo)入對應(yīng)的包,如下:





    

        



        

        

        

        



    

    

        

data節(jié)點下有兩個

1.import :導(dǎo)入變量的解決路徑,和包中引入是一個概念


import是導(dǎo)致類,提供給variable使用,但是import也可以給導(dǎo)入的類提供自定義變量名:alias

alias:是解決import自定義變量名。我們知道,相同包名下,不可以出現(xiàn)同一文件名,如果我們在不同的包名下都有Data類,通過import導(dǎo)入到xml布局,發(fā)現(xiàn)類名已存在,這時我們通過alias自定義一個變量名即可解決。


2.variable:變量的申明,name=定義名稱,type:類型


2.view數(shù)據(jù)綁定

如果view的數(shù)據(jù)需要綁定,那么數(shù)據(jù)源來源于data節(jié)點下的設(shè)置。


綁定數(shù)據(jù)的格式:@{變量}


1.綁定復(fù)雜數(shù)據(jù) :@{person.name}


2.簡單直接引用data name即可



三、錯誤處理


如果出現(xiàn)以下錯誤,在生成的文本中



這是因為layout的布局生成對應(yīng)的java或者kt文件失敗。因為layout的data節(jié)點或者view在引用時出現(xiàn)錯誤,


排查


1、刪除view中數(shù)據(jù)的引用@{}

刪除數(shù)據(jù)關(guān)聯(lián),然后同步數(shù)據(jù),看是否排查完


2、data節(jié)點數(shù)據(jù)引用出錯

第一步排查完還沒有解除,開始排查data節(jié)點,注銷復(fù)雜的數(shù)據(jù)類型,查看variable 節(jié)點下的type是否可以關(guān)聯(lián)到代碼,如果關(guān)聯(lián)不到,說明type類型有誤


第二看import是否正確,直接通過ide關(guān)聯(lián)代碼,如果能正常跳轉(zhuǎn)說明關(guān)聯(lián)正常。


以上排查完后,再同步一下ide工具,重新生成對應(yīng)的文件即可。


本文僅代表作者觀點,版權(quán)歸原創(chuàng)者所有,如需轉(zhuǎn)載請在文中注明來源及作者名字。

免責(zé)聲明:本文系轉(zhuǎn)載編輯文章,僅作分享之用。如分享內(nèi)容、圖片侵犯到您的版權(quán)或非授權(quán)發(fā)布,請及時與我們聯(lián)系進行審核處理或刪除,您可以發(fā)送材料至郵箱:service@tojoy.com