如何在Kotlin中制作一个双向转换器? (在Java中工作)
我得到这个错误:
错误:(32,50)在类br.com.martinlabs中找不到方法indexFromModel(android.databinding.ObservableList
,br.com.martinlabs.usecase.model.GrupoDoPrincipal) .usecase.viewtools.Converters
但是我在Converters
上有这个方法:(我已经尝试了一个类中的伴随对象)
object Converters { fun indexFromModel(list: ObservableList, model: GrupoDoPrincipal): Int { return list.indexOfFirst { it?.id == model?.id } } @InverseMethod("indexFromModel") fun indexToModel(list: ObservableList, index: Int): GrupoDoPrincipal { return index.let { list[it] } } }
用法:
这个方法适用于Java:
public static int indexFromModel(ObservableList 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 list, int index) { return list.get(index); }
在Kotlin object
方法中不是真正的static
。 为了使其成为静态的,你需要为这个方法添加注解@JvmStatic
:
object Converters { @JvmStatic fun indexFromModel(list: ObservableList, model: GrupoDoPrincipal): Int { return list.indexOfFirst { it?.id == model?.id } } @JvmStatic @InverseMethod("indexFromModel") fun indexToModel(list: ObservableList , index: Int): GrupoDoPrincipal { return index.let { list[it] } } }