我收到此错误:
错误:(32,50)无法在类br.com.martinlabs中找到方法indexFromModel(android.databinding.ObservableList <br.com.martinlabs.usecase.model.GrupoDoPrincipal>,br.com.martinlabs.usecase.model.GrupoDoPrincipal) .usecase.viewtools.Converters
但是我在Converters
上有这个方法:(我已经尝试了一个带有伴随对象的类)
object Converters {
fun indexFromModel(list: ObservableList<GrupoDoPrincipal>, model: GrupoDoPrincipal): Int {
return list.indexOfFirst { it?.id == model?.id }
}
@InverseMethod("indexFromModel")
fun indexToModel(list: ObservableList<GrupoDoPrincipal>, index: Int): GrupoDoPrincipal {
return index.let { list[it] }
}
}
用法:
<Spinner
android:selectedItemPosition="@={Converters.indexFromModel(vm.allGrupoDoPrincipal, vm.principal.grupoDoPrincipal)}"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
这个方法适用于Java:
public static int indexFromModel(ObservableList<GrupoDoPrincipal> list, GrupoDoPrincipal model) {
for (int i = 0; i < list.size(); i++) {
if (list.get(i).getId() == model.getId()) {
return i;
}
}
return -1;
}
@InverseMethod("indexFromModel")
public static GrupoDoPrincipal indexToModel(ObservableList<GrupoDoPrincipal> list, int index) {
return list.get(index);
}
在Kotlin object
方法不是真正的static
。要使其静态,您需要为此方法添加注释@JvmStatic
:
object Converters {
@JvmStatic
fun indexFromModel(list: ObservableList<GrupoDoPrincipal>, model: GrupoDoPrincipal): Int {
return list.indexOfFirst { it?.id == model?.id }
}
@JvmStatic
@InverseMethod("indexFromModel")
fun indexToModel(list: ObservableList<GrupoDoPrincipal>, index: Int): GrupoDoPrincipal {
return index.let { list[it] }
}
}