Android数据绑定中如何使用对象方法?

Dan*_*nce 7 android android-databinding

假设我有这个对象:

public class Field
{
   List<String> list;
   public Field()
   {
     list = new ArrayList();
   }
   public boolean isOnTheList(String someText)
   {
     return list.contains(someText);
   }
}
Run Code Online (Sandbox Code Playgroud)

现在,我想在具有这种绑定的xml上使用此功能。

<?xml version="1.0" encoding="utf-8"?>
<layout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">

<data>

    <import type="android.view.View"/>

    <variable
        name="field"
        type="com.greendao.db.Field"/>        

    <variable
        name="user"
        type="com.package.User"/>
</data>

<LinearLayout
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"    
    android:visibility="@{field.isOnTheList(user.name)?View.VISIBLE:View.GONE}"
    tools:context=".advisor.new_visit_report.activities.FieldsSelectionActivity"> ...
Run Code Online (Sandbox Code Playgroud)

问题是那不起作用。有人已经尝试过了吗?

yen*_*rah 3

如果其他一切设置正确,我建议编辑您的方法以返回View.VISIBLEView.GONE直接:

public int isOnTheList(String someText) {
    return list.contains(someText) ? View.VISIBLE : View.GONE;
}
Run Code Online (Sandbox Code Playgroud)

在xml中使用:

android:visibility="@{field.isOnTheList(user.name)}
Run Code Online (Sandbox Code Playgroud)