I been trying to control the visibility of a view using the Implicit Attribute Listeners(reference) in android data binding which allows to access views by id and access attributes like checked, visible etc ..., however when trying to use this, it throws an error like so
Error:(119, 29) Identifiers must have user defined types from the XML file. addTodo_switch_remind is missing it
<android.support.v7.widget.SwitchCompat
android:id="@+id/addTodo_switch_remind"
style="@style/MediumTextViewStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/addTodo_space_project"
android:text="@string/add_todo_remind_label"
android:textOff="@string/generic_no_text"
android:textOn="@string/generic_yes_text" />
<android.support.v4.widget.Space
android:id="@+id/addTodo_space_remind"
style="@style/FormsSpacingStyle"
android:layout_below="@+id/addTodo_switch_remind" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/addTodo_space_remind"
android:orientation="vertical"
android:padding="@dimen/grid_box_single"
android:visibility="@{addTodo_switch_remind.checked ? View.VISIBLE : View.GONE}">
Looks like the implicit Attribute listeners use camel case when it is used in the expressions, thanks to this post I figured it out.
Documenting for others who have the same issue
Step 1: create BindingAdapter:
Step 2: import
R
class in databinding data section at you layout.xml:Step 3: bind custom view to your switcher like this:
As you use
View.VISIBLE
/View.GONE
in your .xml file, you should import theView
type by doing adding<import type="android.view.View"/>
in the data section like the following: