Cannot refer to other View ID in Android data binding

chub picture chub · Jun 9, 2016 · Viewed 8.1k times · Source

I just finished watching Advanced Data Binding - Google I/O 2016 and would like to apply the following to reduce repetition of my expression used in different views.

enter image description here

But I cannot make it work in my case:

<ImageButton
                android:id="@+id/btn_list"
                android:layout_width="48dp"
                android:layout_height="48dp"
                android:layout_gravity="start"
                android:background="@drawable/btn_s01_list"
                android:visibility="@{bean.shouldHideControls? View.GONE: View.VISIBLE}"/>

            <ToggleButton
                android:id="@+id/btn_radar"
                android:layout_width="48dp"
                android:layout_height="48dp"
                android:background="@drawable/btn_radar_selector"
                android:checked="false"
                android:gravity="end"
                android:text=""
                android:textOff=""
                android:textOn=""
                android:visibility="@{btn_list.visibility}"/>

and I got

Error:(426, 39) Identifiers must have user defined types from the XML file. btn_list is missing it

Edit:

I missed an important point in the same talk... The View IDs are camel-casified.

enter image description here

Answer

earthw0rmjim picture earthw0rmjim · Jun 9, 2016

The binding process converts your IDs to properties in the binding class, and the generated names are camel-casified.

You may need to change the following line:

android:visibility="@{btn_list.visibility}"/>

To this:

android:visibility="@{btnList.visibility}"/>