【问题标题】:How to make a Two-way Converter in Kotlin? (Working in java)如何在 Kotlin 中制作双向转换器? (在java中工作)
【发布时间】:2018-05-31 04:06:10
【问题描述】:

我收到此错误:

错误:(32, 50) 在类 br 中找不到方法 indexFromModel(android.databinding.ObservableList, br.com.martinlabs.usecase.model.GrupoDoPrincipal)。 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);
}

【问题讨论】:

    标签: android kotlin converter android-databinding


    【解决方案1】:

    在 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] }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2018-01-09
      • 2021-08-07
      • 2017-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-03
      • 1970-01-01
      相关资源
      最近更新 更多