kotlin+mvvm項(xiàng)目練習(xí)(二)——Databinding

沒寫過kotlin項(xiàng)目,萬事開頭難破婆。不知道如何下手劳闹,看了別人的項(xiàng)目,太大了耘戚,還是先熟悉一下基本的知識(shí)吧嗡髓。今天看看jetpack的Databinding。
1.什么是jetpack

先看看google關(guān)于jetpack的解釋:
jetpack 是一個(gè)由多個(gè)庫組成的套件收津,可幫助開發(fā)者遵循最佳做法饿这、減少樣板代碼并編寫可在各種 Android 版本和設(shè)備中一致運(yùn)行的代碼,讓開發(fā)者可將精力集中于真正重要的編碼工作. 嗯撞秋,大概看了個(gè)寂寞长捧,還是不清楚到底是做什么的,繼續(xù)深入了解吧,百度會(huì)教會(huì)你所不知道的吻贿。

image.png

從這張圖我們可以知道jetpack ,主要分成4部分唆姐,今天主要學(xué)習(xí)下DataBinding.

1.什么是DataBinding

見名知其意,字面意思就是數(shù)據(jù)綁定廓八,API解釋就是:數(shù)據(jù)綁定庫是一種支持庫,借助該庫赵抢,您可以使用聲明性格式(而非程序化地)將布局中的界面組件綁定到應(yīng)用中的數(shù)據(jù)源剧蹂。
特點(diǎn):

  • 替代findviewByid,以后都不用寫了,
  • 解耦合烦却,降低布局和邏輯的耦合性宠叼,使項(xiàng)目維護(hù)起來更簡(jiǎn)單、方便其爵。還可以提高應(yīng)用性能冒冬,
  • 有助于防止內(nèi)存泄漏以及避免發(fā)生 Null 指針異常。

3摩渺,怎么使用DataBinding
數(shù)據(jù)綁定庫與 Android Gradle 插件捆綁在一起简烤。您無需聲明對(duì)此庫的依賴項(xiàng),但必須啟用它摇幻。

如需啟用數(shù)據(jù)綁定横侦,請(qǐng)?jiān)谀K的 build.gradle 文件中將 dataBinding 構(gòu)建選項(xiàng)設(shè)置為 true
在app>buid.gradle文件下增加以下代碼

android {
    ...
    buildFeatures {
        dataBinding true
    }
}

新建了一個(gè)LoginActivity,修改actvity_login.xml代碼,增加<layout></layout>模塊

<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <data>

        <import type="android.view.View" />


        <variable
            name="user"
            type="com.tz.test.ui.User" />


    </data>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/white"
        android:gravity="center_horizontal"
        android:orientation="vertical"
        android:paddingLeft="15dp"
        android:paddingTop="84dp"
        android:paddingRight="15dp">

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@mipmap/icon_logo" />

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:layout_marginTop="60dp"
            android:paddingTop="14dp">

            <EditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@color/white"
                android:hint="請(qǐng)輸入手機(jī)號(hào)碼"
                android:text='@{user.phone}' />

            <View
                android:layout_width="match_parent"
                android:layout_height="1dp"
                android:layout_alignParentBottom="true"
                android:background="@color/c_FFEEEEEE" />
        </RelativeLayout>

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:layout_marginTop="10dp"
            android:paddingTop="14dp">

            <EditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@color/white"
                android:hint="請(qǐng)輸入驗(yàn)證碼"
                android:text='@{user.inputCode}' />

            <View
                android:layout_width="match_parent"
                android:layout_height="1dp"
                android:layout_alignParentBottom="true"
                android:background="@color/c_FFEEEEEE" />
        </RelativeLayout>

        <androidx.appcompat.widget.AppCompatButton
            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:layout_marginTop="45dp"
            android:background="@drawable/shape_login_btn"
            android:text="登錄"
            android:textColor="@color/white" />
    </LinearLayout>
</layout>

新建了一個(gè)javaBean绰姻,用于展示用戶手機(jī)號(hào)和輸入的驗(yàn)證碼

class User(val phone: String, val inputCode: String) {
}

系統(tǒng)會(huì)為每個(gè)布局文件生成一個(gè)綁定類枉侧。默認(rèn)情況下,類名稱基于布局文件的名稱狂芋,重新選擇Make Project,系統(tǒng)會(huì)自動(dòng)生成榨馁,ActivityLoginBinding。
4帜矾, DataBindingUtil.setContentView替代setContentView

 val bind=DataBindingUtil.setContentView<ActivityLoginBinding>(this, R.layout.activity_login)
        bind.user= User(phone = "1234555",inputCode = "888888")
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末翼虫,一起剝皮案震驚了整個(gè)濱河市屑柔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蛙讥,老刑警劉巖锯蛀,帶你破解...
    沈念sama閱讀 211,639評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異次慢,居然都是意外死亡旁涤,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門迫像,熙熙樓的掌柜王于貴愁眉苦臉地迎上來劈愚,“玉大人,你說我怎么就攤上這事闻妓【穑” “怎么了?”我有些...
    開封第一講書人閱讀 157,221評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵由缆,是天一觀的道長(zhǎng)注祖。 經(jīng)常有香客問我,道長(zhǎng)均唉,這世上最難降的妖魔是什么是晨? 我笑而不...
    開封第一講書人閱讀 56,474評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮舔箭,結(jié)果婚禮上罩缴,老公的妹妹穿的比我還像新娘。我一直安慰自己层扶,他們只是感情好箫章,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著镜会,像睡著了一般檬寂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上戳表,一...
    開封第一講書人閱讀 49,816評(píng)論 1 290
  • 那天焰薄,我揣著相機(jī)與錄音,去河邊找鬼扒袖。 笑死塞茅,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的季率。 我是一名探鬼主播野瘦,決...
    沈念sama閱讀 38,957評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了鞭光?” 一聲冷哼從身側(cè)響起吏廉,我...
    開封第一講書人閱讀 37,718評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎惰许,沒想到半個(gè)月后席覆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,176評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡汹买,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評(píng)論 2 327
  • 正文 我和宋清朗相戀三年佩伤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片晦毙。...
    茶點(diǎn)故事閱讀 38,646評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡生巡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出见妒,到底是詐尸還是另有隱情孤荣,我是刑警寧澤,帶...
    沈念sama閱讀 34,322評(píng)論 4 330
  • 正文 年R本政府宣布须揣,位于F島的核電站盐股,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏耻卡。R本人自食惡果不足惜疯汁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望劲赠。 院中可真熱鬧,春花似錦秸谢、人聲如沸凛澎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽塑煎。三九已至,卻和暖如春臭蚁,著一層夾襖步出監(jiān)牢的瞬間最铁,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工垮兑, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留冷尉,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,358評(píng)論 2 360
  • 正文 我出身青樓系枪,卻偏偏與公主長(zhǎng)得像雀哨,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容