我试图在数据绑定布局中声明一个变量,它的类型是整数数组,但我在构建项目时出错
找不到<android.widget.LinearLayout app:availableGradesIndexes>接受参数类型“int[]”的setter
如果绑定适配器提供了setter,请检查适配器的注解是否正确,参数类型是否匹配。
XML中的变量声明
<variable
name="availableGradesIndexes"
type="int[]" />
<variable
name="subject"
type="Subject" />
字符串
所述绑定适配器
@BindingAdapter("availableGradesIndexes", "subject")
fun LinearLayout.bindGradeWithMarks(availableGradesIndexes: Array<Int>) {
//....
}
型
使用
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:subjct="@{subject}"
app:availableGradesIndexes="@{availableGradesIndexes}"
tools:layout_height="@dimen/_40sdp" />
型
我还尝试了什么
我试图像fun LinearLayout.bindGradeWithMarks(availableGradesIndexes: IntArray)
那样将绑定适配器方法的类型声明到IntArray
我也尝试了List<Int>
,如fun LinearLayout.bindGradeWithMarks(availableGradesIndexes: List<Int>)
和变量类型List<Int>
我还尝试将绑定变量类型设置为Integer
和Integer[]
以及List<Integer>
所以问题是如何用绑定适配器绑定一个整型列表或数组?!
5条答案
按热度按时间koaltpgm1#
我也遇到了类似的问题,如标题所述。我试图通过
<include>
标签布局的数据绑定来更改可见性,如下所示:字符串
解决方案是,我必须将子布局layout_no_data Package 为
型
希望它能帮助某人。
pnwntuvh2#
这是因为Kotlin中的Array是Java中的Array []。
尝试在Java中使用IntArray,它将是int[]。
我尝试了你的例子与IntArray和它的作品。
字符串
你能展示你的布局XML吗?
型
flvlnr443#
你可以使用
List
来代替int[]
,但这需要将List
类导入布局,以便能够将其用作availableGradesIndexes
变量的type
:字符串
然后,您可以使用
List<Int>
将其应用于BindingAdapter:型
如果你想使用
int[]
数组;不需要导入:型
适配器:
型
更新:
Cannot find a setter for <android.widget.LinearLayout app:availableGradesIndexes> that accepts parameter type 'java.util.List<java.lang.Integer>'
个这意味着
BidningAdapter
方法在布局中无法识别;因此只需确保将其添加到伴随对象中,并由@JvmStatic
注解:型
e3bfsja24#
这个问题是在另一个属性名称,我不知道为什么错误消息没有提到它!!
字符串
xnifntxz5#
在Kotlin案例中:
1.简单地把你的函数放在同伴对象中,就像这样。
字符串
1.确保属性应相同
型