2017-10-22 8 views
0

안녕하세요, 내 자바 코드에 ObservableField이 있습니다. 나는 그것에 get 메서드를 호출하여 수행 할 수있는 값을 얻고 싶습니다.안드로이드에서 ObservableField의 가치를 얻는 방법

이것은 아래 접근법을 사용하여 수행 할 수 있습니다. 나는 혼란스럽고 여기에 게터를 만들어서 그 가치를 얻으려고하는지 모르겠다. 또는 다른 표준 접근법이 ObservableField의 가치를 얻으 려합니다. 내 앱에서도 RxJava를 사용하고 있습니다.

fun login(view: View) { 
    val emailVal = email.get() 
} 

답변

1

email.get()을 사용하는 것으로 충분하다고 생각합니다. 당신이 정말로 당신의 코드에서 .get()의 사용을 제거하려는 경우, 당신은 백업 필드를 사용할 수 있습니다 :

val _email = ObservableField<String>() 
var email: String 
    get() = _email.get() 
    set(value) = _email.set(value) 

//use 
fun login(view: View) { 
    val emailVal = email 
} 
2

이 위임에 대해 정확히 것입니다. Kotlin에서 속성 위임이란 연산자 함수 getValue 및 선택적으로 setValue을 구현하는 클래스를 가짐을 의미하며이 속성은 속성에 액세스하거나 업데이트 할 때 호출됩니다.

귀하의 대표는 다음과 같이 수 : https://kotlinlang.org/docs/reference/delegated-properties.html

:

val email : String by ObservableDelegate() 

fun login(view: View) { 
    val emailVal = email 
} 

여기 특성 위임에 대한 자세한 내용 :

class <T> ObservableDelegate 
{ 
    val field = ObservableField<T>() 
    operator fun getValue(self: Any?, prop: KProperty<*>) : T 
     = field.get() 
    operator fun setValue(self: Any?, prop: KProperty<*>, value: T) 
     = field.set(value) 
} 

당신은 다음과 같이 대리자를 사용할 수 있습니다