2016-11-21 1 views
0

일부 BindingAdapters를 작성 중이며 같은 값을 알아야하는 두 개의 어댑터가 있습니다 (둘 다 동일한보기를 의미합니다). 그래서 나는 성공하지 않고 이것을 시도했다 :BindingAdapers는 매개 변수를 공유합니다.

@BindingAdapter({"param1", "param2"}) 
@BindingAdapter({"param3", "param2"}) 

이것이 불가능한가요? 컴파일러가 두 번째 바인딩 (같은 View 인스턴스에서) 코드를 생성하기 전에 어떻게 든 param2가 손실되는 것처럼 보입니다.

질문 : BindingAdapters를 사용하려고하면이 방법이 잘못 될 수 있습니까?

EIDT : 이것은 내가보기를 결합하는 방법입니다

<TextView 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      app:param1="@{...}" 
      app:param2="@{...}" 
      app:param3="@{...}" 
/> 

그리고 나는 그것이 일치 및 바인딩 어댑터 모두 실행할 것으로 예상. 이제 나에게 보이는 문서를 읽으면 각 매개 변수는 하나의 일치에만 사용할 수 있습니다.

+1

'param'값을 전달하는 XML 코드를 공유 할 수 있습니까? –

+0

질문에 더 많은 컨텍스트를 추가 할 수 있습니까? – tynn

답변

1

문제점을 올바르게 이해하면 세 가지 매개 변수 모두에 대한 바인딩 어댑터를 정의하고 다른 방법으로 위임하여 문제점을 처리 할 수 ​​있어야합니다. 이와 같이 하나가 설정되지 않은 경우 사용할 수있는 매개 변수 쌍을 바인딩 할 수도 있습니다.

@BindingAdapter({"param1", "param2", "param3"}) 
public static void bind123(TextView view, String param1, String param2, String param3) { 
    bind12(param1, param2); 
    bind23(param2, param3); 
} 

@BindingAdapter({"param1", "param2"}) 
public static void bind12(TextView view, String param1, String param2) { ... } 

@BindingAdapter({"param2", "param3"}) 
public static void bind23(TextView view, String param2, String param3) { ... } 
관련 문제