Android 无需额外参数即可绑定视图
我正在尝试将分隔器装饰绑定到回收器视图Android 无需额外参数即可绑定视图,android,mvvm,data-binding,Android,Mvvm,Data Binding,我正在尝试将分隔器装饰绑定到回收器视图 <android.support.v7.widget.RecyclerView android:id="@+id/recycler" app:layoutManager="android.support.v7.widget.LinearLayoutManager" app:dividerDirection="@{}" a
<android.support.v7.widget.RecyclerView
android:id="@+id/recycler"
app:layoutManager="android.support.v7.widget.LinearLayoutManager"
app:dividerDirection="@{}"
android:layout_width="match_parent"
android:layout_height="match_parent" />
在没有任何额外参数的情况下绑定视图的正确方法是什么
如果我使用类似
app:dividerDirection="@{@drawable/line_divider}"
它很好用
但它不适用于任何人
app:dividerDirection="@{}"
我只需要对视图的引用,就可以获得上下文recyclerView.addItemDecoration(newlineDividerItemDecoration(this.build()) 如果没有任何参数,就不能有绑定适配器。 您可以做的是传递
null
app:dividerDirection=“@{null}”
在这种情况下,绑定适配器可能如下所示:
@BindingAdapter("dividerDirection")
public static void setItemDecoration(RecyclerView view, Integer direction) {
LineDividerItemDecoration decoration =
new LineDividerItemDecoration(view.getContext());
view.addItemDecoration(decoration);
}
我建议使用通用逻辑创建绑定适配器,而不是为您拥有的每个用例都使用它。
在您的情况下,如果您想提供除法器方向,您可以传递integer/enum,这将与参数有一些逻辑。您需要传递参数才能使用绑定适配器。我还没有找到解决这个问题的方法。因为这是我在所有RecyclerView中使用的一种装饰,所以我想让它保持简单,只需删除参数,所以不需要特别考虑,并且总是使用相同的大小。但答案很好,我将使用枚举或类似的东西:)
@BindingAdapter("dividerDirection")
public static void setItemDecoration(RecyclerView view, Integer direction) {
LineDividerItemDecoration decoration =
new LineDividerItemDecoration(view.getContext());
view.addItemDecoration(decoration);
}