0

다음 코드는 양방향 바인딩 방식으로 user.firstName에서 EditText까지 정의합니다.Java에서 양방향 데이터 바인딩 (프로그래밍 방식)

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

두 가지 방법으로 바인딩 접근하여 프로그래밍 자바 코드에 EditTextuser.firstName을 설정하는 방법을 어쨌든입니다.

예 :

editText.setTextbyTwoWay(user.fisrtName); 

P.S : 나는 EditText자바 코드에서 프로그래밍 방식으로 만들어 설명하는 것을 잊었다. 그래서 에 텍스트 값two-way binding에 대한 Java 코드에서 EditText으로 정의해야합니다.

+0

관찰자 디자인 패턴은? – NewUser

+4

ObservableField로 구현할 수 있습니다. –

+0

DataBinding은 자바 파일에 적은 코드를 작성하는 데 사용됩니다. 왜 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();