I am trying to test data binding as given in the guide here. I have included this in my build.gradle file (of module app) :
compileSdkVersion 'android-MNC'
buildToolsVersion '23.0.0 rc2'
In the project build.gradle file, I have included this in my dependencies :
classpath "com.android.tools.build:gradle:1.3.0-beta2"
classpath "com.android.databinding:dataBinder:1.0-rc0"
The layout file is exactly the same as the one given in the guide.
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable name="user" type="com.example.User"/>
</data>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{user.firstName}"/>
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{user.lastName}"/>
</LinearLayout>
</layout>
Initially it gave an error Element layout does not have the required attribute layout_width and layout_height
.
I tried to fix it by assigning match_parent to both. Then I got the error
Error parsing XML: duplicate attribute
on the lines where i assigned layout_height
and layout_width
to the linear layout.
Again I tried to fix this by removing these attributes. Now every time I try to compile, I see this- error: package my.package.name.databinding
does not exist.
The code completion is working perfectly in my Fragment where I am trying to use this layout.
So what did I miss ?
removing
apply plugin: 'com.neenbedankt.android-apt'
from my build.gradle solved my problem.According to the current version of the guide (2015-11-11) you just have to add two dependencies: In the file build.gradle of the project add the gradle dependency. Currently the most recent version is 1.5.0-beta3
And in the file build.gradle of the module include the dataBinding section:
The error
may ocurr because a mismatch between the xml and the POJO class
// This is under activity_main xml .
// This is Student Class
public String firstname ; public String lastname ;
}
You may have a problem or mismatch between your model and your layout file. In my case I had:
but my model class was like so:
You have to be very careful that your POJO class data members should be
public
if you are not creating the getter setters.If you have simple POJO without any getter or setter
If you make getter setter, javaBean style class
it’s usually because there is an error in your XML layout file and it can’t generate the binding object. Make sure you write data type correctly, check lower or upper of your writing.
And make sure object is right calling: