0

以下代碼通過雙向綁定方法定義了user.firstNameEditTextJava中的雙向數據綁定(編程式)

<EditText android:text="@={user.firstName}" .../> 

反正是有如何在Java代碼中通過雙向綁定的方法設置user.firstNameEditText編程。

例如;

editText.setTextbyTwoWay(user.fisrtName); 

P.S:我忘了描述EditTextJava代碼的編程創建。這就是爲什麼我必須在two-way binding的Java代碼中將文本值定義爲此EditText

+0

觀察者設計模式可能是!? – NewUser

+4

你可以使用'ObservableField'實現它 –

+0

DataBinding用於在你的java文件中編寫較少的代碼,爲什麼要在java代碼中實現雙向綁定? –

回答

0

您可以在Observable.OnPropertyChangedCallback.onPropertyChanged()TextWatcher.afterTextChanged()回調中執行此操作。但是,這是一個相當廣泛的實現,並且完全在數據綁定中做了什麼。

因此,您應該考慮仍然使用數據綁定來編程定義的視圖。在佈局中儘可能多地定義,然後用數據綁定來擴充它。進一步的定製可以在充氣的視圖上完成。

<layout xmlns:android="http://schemas.android.com/apk/res/android> 
    <data> 
     <variable name="user" type="my.User" /> 
    </data> 
    <EditText 
     android:id="@+id/edit_text" 
     android:text="@={user.firstName}" 
     [...] /> 
</layout> 

現在你只需要添加綁定根視圖,而不是EditText

EditTextBinding binding = EditTextBinding.inflate(getLayoutInflater()); 
EditText editText = binding.editText; 
View viewToAdd = binding.getRoot();