簡(jiǎn)介
使用ObservableField<T>來初始化變量呀狼,例如:var userPhone=ObservableField<String>()
封裝
這時(shí)候我們需要對(duì)model類進(jìn)行一層封裝才能達(dá)到我們的要求,好了寨腔,上圖再解釋辛友。
解釋
因?yàn)槭褂胐atabinding是雙向綁定薄扁,所以咱們這里就比較方便的來直接判斷變量中的值即可。因?yàn)檫@里是我自己寫的Demo废累,所以邏輯判斷是比較簡(jiǎn)單的邓梅,大家如果使用按照自己的需求網(wǎng)上添加即可。
xml代碼
<data class="RegisterBind">
<variable
name="activity"
type="com.kotlin.databinding.zhihu.activity.user.RegisterActivity"/>
<variable
name="registerModel"
type="com.kotlin.databinding.zhihu.model.RegisterModel"/>
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="@android:color/white"
android:focusable="true"
android:focusableInTouchMode="true"
android:paddingLeft="0dp"
android:paddingRight="@dimen/margin_block">
<ImageView
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_gravity="center_vertical|start"
android:layout_marginEnd="5dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_marginStart="5dp"
android:contentDescription="手機(jī)號(hào)"
android:scaleType="centerInside"
android:src="@drawable/account_phone"/>
<View
android:layout_width="1dp"
android:layout_height="18dp"
android:layout_gravity="center_vertical|start"
android:layout_marginLeft="34dp"
android:layout_marginStart="34dp"
android:background="@color/divider"/>
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="36dp"
android:layout_gravity="center_vertical|start"
android:layout_marginLeft="48dp"
android:layout_marginStart="48dp"
android:hint="請(qǐng)輸入您的手機(jī)號(hào)碼">
<android.support.design.widget.TextInputEditText
android:id="@+id/user_mobile"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/transparent"
android:gravity="center_vertical"
android:imeOptions="actionNext"
android:inputType="phone"
android:maxLength="11"
android:singleLine="true"
android:text="@={registerModel.userPhone}"
android:textColor="@color/font_title"
android:textSize="@dimen/font_normal"/>
</android.support.design.widget.TextInputLayout>
<com.kotlin.databinding.zhihu.widget.CountButton
android:id="@+id/countButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:minHeight="24dp"
android:background="@null"
android:layout_gravity="end|center_vertical"
android:gravity="center_vertical"
android:text="@{@string/timer_start}"
android:textColor="@color/color_primary_dark"
android:textSize="12sp"
bind:setDefaultTime="@{@integer/integer_count_time}"
bind:setFinishText="@{@string/timer_finish}"/>
</FrameLayout>
<View
android:layout_width="34dp"
android:layout_height="1dp"
android:background="@android:color/white"/>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="@android:color/white"
android:paddingLeft="0dp"
android:paddingRight="@dimen/margin_block">
<ImageView
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_gravity="center_vertical|start"
android:layout_marginEnd="5dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_marginStart="5dp"
android:contentDescription="密碼"
android:scaleType="centerInside"
android:src="@drawable/account_password"/>
<View
android:layout_width="1dp"
android:layout_height="20dp"
android:layout_gravity="center_vertical|start"
android:layout_marginLeft="34dp"
android:layout_marginStart="34dp"
android:background="@color/divider"/>
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="36dp"
android:layout_gravity="center_vertical|start"
android:layout_marginLeft="48dp"
android:layout_marginStart="48dp"
android:gravity="center_vertical"
android:hint="請(qǐng)輸入您的密碼">
<android.support.design.widget.TextInputEditText
android:id="@+id/user_password"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/transparent"
android:gravity="center_vertical"
android:inputType="textPassword"
android:singleLine="true"
android:text="@={registerModel.userPwd}"
android:textColor="@color/font_title"
android:minLines="6"
android:maxLength="20"
android:textSize="@dimen/font_normal"/>
</android.support.design.widget.TextInputLayout>
<CheckBox
android:id="@+id/check_visible"
style="@style/PasswordCheckboxTheme"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end|center_vertical"
android:gravity="center"
android:minHeight="24dp"/>
</FrameLayout>
<View
android:layout_width="34dp"
android:layout_height="1dp"
android:background="@android:color/white"/>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="@android:color/white"
android:paddingLeft="0dp"
android:paddingRight="@dimen/margin_block">
<ImageView
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_gravity="center_vertical|start"
android:layout_marginEnd="5dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_marginStart="5dp"
android:contentDescription="驗(yàn)證碼"
android:src="@drawable/ic_identify"/>
<View
android:layout_width="1dp"
android:layout_height="20dp"
android:layout_gravity="center_vertical|start"
android:layout_marginLeft="34dp"
android:layout_marginStart="34dp"
android:background="@color/divider"/>
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="36dp"
android:layout_gravity="center_vertical|start"
android:layout_marginLeft="48dp"
android:layout_marginStart="48dp"
android:gravity="center_vertical"
android:hint="請(qǐng)輸入您的驗(yàn)證碼">
<android.support.design.widget.TextInputEditText
android:id="@+id/phone_identify_code"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/transparent"
android:gravity="center_vertical"
android:inputType="number"
android:singleLine="true"
android:text="@={registerModel.idenfityCode}"
android:textColor="@color/font_title"
android:textSize="@dimen/font_normal"/>
</android.support.design.widget.TextInputLayout>
<com.kotlin.databinding.zhihu.widget.CheckView
android:id="@+id/change_identify_code"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:gravity="center"
android:minHeight="24dp"
android:layout_gravity="end|center_vertical"
checkview:bg_color="@color/color_primary_light"
checkview:line_num="10"
checkview:point_num="100"
checkview:text_color="#FF00FFFF"
checkview:text_length="4"
checkview:text_size="30dp"/>
</FrameLayout>
<View
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:background="@color/cut_line_color" />
<Button
android:id="@+id/register_btn"
android:layout_width="match_parent"
android:layout_height="44dp"
android:layout_margin="15dp"
android:background="@drawable/bg_btn_main"
android:enabled="false"
android:text="注冊(cè)"
android:textColor="@android:color/white"
android:textSize="@dimen/font_title"
bind:onClickListener="@{activity}"
/>
</LinearLayout>
xml的布局是這樣的邑滨,好了日缨,咱們看看怎么賦值吧。
具體調(diào)用
registBind.activity = this //給button注冊(cè)監(jiān)聽
registBind.registerModel = registModel //給xml賦值model類
registModel.btnIsEnable(registModel) //監(jiān)聽EditText的值是否合法
//初始化model類掖看,用回調(diào)的值更新button的isEnabled屬性
var registModel = RegisterModel { isBtnEnable -> isBtnEnable(isBtnEnable) }
//更新button狀態(tài)
fun isBtnEnable(isBtnEnable: Boolean) {
registBind.registerBtn.isEnabled = isBtnEnable
}
好了匣距,到這里databinding監(jiān)聽EditText的用法就講完了。有什么疑問可以留言哎壳。