第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用數(shù)據(jù)綁定從編輯文本中獲取字符串值

使用數(shù)據(jù)綁定從編輯文本中獲取字符串值

飲歌長嘯 2022-03-10 16:01:46
我正在嘗試使用一些數(shù)據(jù)綁定來放置一個 MVVM 結(jié)構(gòu)。我為視圖創(chuàng)建了以下 xml 文件(示例):<data>    <variable        name="LoginVM"        type="org.ledeme.animekeeper.LogginMV"/><EditText        android:id = "@+id/input_loggin"        android:text="@{LoginVM.username}"        android:layout_width = "wrap_content"        android:layout_height = "wrap_content"        android:layout_marginTop="200sp"        android:layout_centerHorizontal="true"        android:hint="@string/login"        android:width="200sp"        android:inputType="text"        android:textAlignment="center"        android:singleLine="true"        android:lines="1"        android:maxLines="1"        />在視圖模型(我的稱為 LogginMV)中,我定義了一個private ObservableField<String> username = new ObservableField<>("");將用戶輸入的文本綁定到username我曾經(jīng)username.get()嘗試獲取用戶名,但我只得到""(我知道這是由于括號中的值new ObservableField<>(""),如果它是“測試”,我會得到“測試”)我確實創(chuàng)建了一個getter和setter,如下所示:public String getUsername(){    return username.get();}public void setUsername(ObservableField<String> username) {    this.username = username;    this.username.notifyChange();}我的問題是我無法弄清楚如何正確地進(jìn)行綁定,所以我得到了用戶輸入的內(nèi)容,而不是我在new ObservableField<>("").
查看完整描述

2 回答

?
臨摹微笑

TA貢獻(xiàn)1982條經(jīng)驗 獲得超2個贊

我發(fā)現(xiàn)了一個很好的調(diào)整:


在視圖(xml 文件)中添加:


android:afterTextChanged="@{(edtitable)->LoginVM.afterUserNameChange(edtitable)}"

這將觸發(fā)afterUserNameChange視圖模型中的功能。


public void afterUserNameChange(CharSequence s)

{

    //Log.i("truc", s.toString());

    this.usrNm = s.toString();

}

此功能在用戶每次輸入后觸發(fā)EditText


查看完整回答
反對 回復(fù) 2022-03-10
?
拉風(fēng)的咖菲貓

TA貢獻(xiàn)1995條經(jīng)驗 獲得超2個贊

最好使用 LiveData 和 MutableLiveData 模式。在您的 ViewModel LoginVM 中聲明:


private var _username = MutableLiveData<String?>()

var username: LiveData<String?> = null

   get() = _username

然后在 EditText 的 xml 中添加:


android:afterTextChanged="@{LoginVM::setUsername}"

android:text="@{LoginVM.username}"

所以還要在你的 LoginVM viemodel 中定義 setUsername 函數(shù):


fun setUsername(s: Editable){

   _username.value = s.toString()

}

而已?,F(xiàn)在你的用戶名發(fā)生了變化,因為它在 viewmodel 中發(fā)生了變化。此外,如果您更改 EditText 中的文本,它會自動更新視圖模型中的 _username 字段?,F(xiàn)在您可以在布局中創(chuàng)建 onClick 函數(shù)并使用您在 editText(_username) 中輸入的值并進(jìn)行一些有用的操作。


查看完整回答
反對 回復(fù) 2022-03-10
  • 2 回答
  • 0 關(guān)注
  • 198 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號