我想使用带List
参数的 BindingAdapter,但是当我尝试编译它时,它会抛出这个错误,
找不到接受参数类型“java.util.List<Alert>”的 <androidx.cardview.widget.CardView app:setVisiblityByList> 的设置器
我的方法:
@BindingAdapter("setVisibilityByList")
fun setVisibilityByList(view: View, l: List<*>?) {
if (l?.isNotEmpty() == true) {
view.visibility = View.VISIBLE
} else {
view.visibility = View.GONE
}
}
我的 XML:
<androidx.cardview.widget.CardView
android:id="@+id/card_view_alert"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:layout_width="match_parent"
android:visibility="gone"
app:cardBackgroundColor="#77000000"
app:cardCornerRadius="10dp"
app:cardElevation="0dp"
app:contentPadding="5dp"
app:setVisiblityByList="@{locationAndWeather.alerts}">
我也尝试过fun setVisiblityByList(view: View, l: List<Alert>?)
同样的结果。这似乎是Java的类型擦除引起的问题。有什么办法可以让它工作吗?