gpt4 book ai didi

android - 如何在 Kotlin 中制作双向转换器? (在java中工作)

转载 作者:太空宇宙 更新时间:2023-11-03 13:42:58 24 4
gpt4 key购买 nike

我收到这个错误:

Error:(32, 50) cannot find method indexFromModel(android.databinding.ObservableList<br.com.martinlabs.usecase.model.GrupoDoPrincipal>, br.com.martinlabs.usecase.model.GrupoDoPrincipal) in class br.com.martinlabs.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] }
}
}

关于android - 如何在 Kotlin 中制作双向转换器? (在java中工作),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47857875/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com