データバインディングをいじっている時、こんなエラーに遭遇して少し悩んだ。
^gt; java.lang.RuntimeException: failure, see logs for details.
cannot generate view binders java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
at java.util.ArrayList.rangeCheck(ArrayList.java:635)
at java.util.ArrayList.get(ArrayList.java:411)
at android.databinding.tool.ext.ExtPackage$ext$3e67e227.androidId(ext.kt:81)
at android.databinding.tool.writer.WriterPackage$LayoutBinderWriter$aded6857$readableName$1.invoke(LayoutBinderWriter.kt:89)
at android.databinding.tool.writer.WriterPackage$LayoutBinderWriter$aded6857$readableName$1.invoke(LayoutBinderWriter.kt)
at android.databinding.tool.ext.LazyExt.get(ext.kt:32)
at android.databinding.tool.writer.WriterPackage$LayoutBinderWriter$aded6857.getReadableName(LayoutBinderWriter.kt)
at android.databinding.tool.writer.WriterPackage$LayoutBinderWriter$aded6857$fieldName$1.invoke(LayoutBinderWriter.kt:106)
at android.databinding.tool.writer.WriterPackage$LayoutBinderWriter$aded6857$fieldName$1.invoke(LayoutBinderWriter.kt)
at android.databinding.tool.ext.LazyExt.get(ext.kt:32)
at android.databinding.tool.writer.WriterPackage$LayoutBinderWriter$aded6857.getFieldName(LayoutBinderWriter.kt)
at android.databinding.tool.writer.WriterPackage.getFieldName(Unknown Source)
at android.databinding.tool.LayoutBinder$1.compare(LayoutBinder.java:49)
at android.databinding.tool.LayoutBinder$1.compare(LayoutBinder.java:46)
わかってみれば単純なことなんだけど、「android:text=”@{Item.hoge}”」と書くべき所を「android:id=”@{Item.hoge}”」と間違った結果。
最初からデータバインディングを使っていればはまることはないと思うけど、既存のプロジェクトにデータバインディングを導入する作業でやらかすとこうなる。