2017-12-17 8 views
3

나는이 오류가 무엇입니까 :Kotlin에서 양방향 변환기를 만드는 방법은 무엇입니까? (자바에서 작업)

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"/> 
자바에서 작동 :

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); 
} 

답변

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] } 
    } 
} 
관련 문제