使用android数据绑定库绑定varargs

时间:2016-04-29 01:49:43

标签: android android-databinding

我正在尝试为SwipeRefreshLayout的

编写自定义setter

setColorScheme(int... colors)

但似乎它的参数是varargs。

我现在只能绑定一种颜色,如下所示:

   @BindingAdapter("app:colorSchemeResources") 
    public static void bindRefreshColor(SwipeRefreshLayout swipeRefreshLayout,  int colorResId) {
            swipeRefreshLayout.setColorSchemeColors(colorResId);
    } 

的xml:

  <android.support.v4.widget.SwipeRefreshLayout
                android:id="@+id/swipe_container"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                app:colorSchemeResources ="@{@color/primary}"
                />

我的问题是:

如何为varargs编写自定义setter?

如何在xml文件中绑定varargs?

1 个答案:

答案 0 :(得分:1)

请试试这个:

在colors.xml中指定一个包含所需颜色的整数数组,例如:

    <integer-array name="color_scheme" >
       <item>@color/first_color</item>
        <item>@color/second_color</item>
    </integer-array>

更改你的bindingadapter:

    @BindingAdapter("app:colorSchemeResources")
    public static void bindRefreshColor(SwipeRefreshLayout swipeRefreshLayout, int[] colorResIds) {
    swipeRefreshLayout.setColorSchemeColors(colorResIds);
    }

在您的视图中引用您的数组:

        <android.support.v4.widget.SwipeRefreshLayout
        android:id="@+id/swipe_refresh_layout"
        android:layout_width="match_parent"
        app:colorSchemeResources ="@{@intArray/color_scheme}"
        android:layout_height="wrap_content">