2017-04-18 5 views
0

동일한 XML의 값에 따라보기를 표시하거나 숨길 수 있습니까?Android보기 변수를 사용하여보기를 표시/숨길 수 있습니까?

자바 파일에 많은 조건을 쓰고 싶지 않습니다.

의미는 무엇입니까; we can do this

<TextView android:text="@{user.lastName}" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:visibility="@{user.isAdult ? View.VISIBLE : View.GONE}"/> 

경우 우리는 너무 잘 할 수있을 것인가?

android:visibility="@{idOfMySwitch.isSelected() ? View.VISIBLE : View.GONE}"/> 

만약 내가 어떻게 할 수 있습니까?

답변

0

이 작업을 수행 할 수 없습니다. idOfMySwitch.isSelected()은 데이터 바인딩 자체에 대해 관찰 할 수 없습니다.

그런 경우 나는 소유자가 있고 스위치에 대한 양방향 바인딩과 가시성에 대한 한 가지 방법으로 지정합니다.

선택하면 문제가 발생할 수 있습니다. 양방향 바인딩이 아니거나 적어도 구현하기 쉽지 않습니다. 그러나 스위치를 사용하면 어쨌든 검사 된 상태를 사용하려고 할 수 있습니다.

<Switch ... 
    android:checked="@={holder.myState}" /> 
<TextView ... 
    android:visibility="@{holder.myState ? View.VISIBLE : View.GONE}" /> 
0

요소를 표시할지 여부를 결정하려면보기 모델의 상태를 확인해야합니다. 당신의 ViewModel에서

:

@Bindable 
public boolean isAdult() { 
    return isAdult; 
} 

활동에서, 당신은 결국 당신의 텍스트 뷰의 가시성을 업데이트합니다 따라 뷰 모델에 isAdult을 업데이트 스위치에 클릭 리스너에 있어야합니다.

비슷한 예가 here입니다.