I am trying to do a simple test example with Android Data Binding. I only want to show in my fragment the text "test" in the EditText named "title", but this text is  not shown. Here is my code:
TestVM.java
public class TestVM extends BaseObservable {
    public TestVM() {}
    @Bindable
    public String getText() {
        return "test";
    }
}
fr_login.xml
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
    <variable
        name="test"
        type="de.theappguys.templateandroid.viewmodel.TestVM"/>
</data>
<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/transparent"
    >
 <TextView
            android:id="@+id/title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_marginTop="20dp"
            android:text="@{test.text}"
            android:textSize="22sp"
            android:textStyle="bold"
            android:textColor="@android:color/black"
            />
</RelativeLayout>
</layout>
FrLogin.java
@EFragment
public class FrLogin extends Fragment {
...
 @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    FrLoginBinding binding = DataBindingUtil.inflate(inflater, R.layout.fr_login, container, false);
    return binding.getRoot();
}
...
build.gradle
android {
.....
   dataBinding {
       enabled = true
   }
....
}
                you have to bind your ViewModel  as well. E.g
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    FrLoginBinding binding = DataBindingUtil.inflate(inflater, R.layout.fr_login, container, false);
    binding.setTest(new TestVM());
    return binding.getRoot();
}
                        you need to set value to your binding
FrLoginBinding binding = DataBindingUtil.inflate(inflater, R.layout.fr_login, container, false);
binding.setTest(new TestVM());
Problem with your code is that there is no connection between your model and Fragment.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With