DataBinding으로 바인드한 변수를 include 태그로 읽어들이는 다른 레이아웃으로 이용하고 싶다
3439 단어 안드로이드XMLDataBinding
실현하고 싶은 것
등장 파일
Activity(
MainActivity.kt
)의 레이아웃 파일( activity_main.xml
)에 include
태그로 다른 레이아웃 파일( contents_main.xml
)을 읽는 경우에 DataBinding
를 사용하여 MainActivity.kt <=> MainViewModel.kt
데이터를 contents_main.xml
에서 사용하고 싶습니다.해결책
contents_main.xml에 정의 된 변수를 activity_main.xml의 include 태그 내에서 전달
contents_main.xml<layout>
<data>
<variable
name="foo"
type="String"/>
</data>
…
</layout>
위와 같이 contents_main.xml
에 변수( foo
)를 정의한다.
activity_main.xml<layout>
…
<data>
<variable
name="vm"
type="com.example.MainViewModel" />
</data>
<FrameLayout>
…
<include
android:id="@+id/contents"
layout="@layout/contents_main"
app:foo="@{vm.hoge}" /> /* ←ココ */
</FrameLayout>
</layout>
위와 같이, contents_main.xml
로 정의한 변수( foo
)에, MainActivity.kt <=> MainViewModel.kt間
로 바인드 한 클래스를 이용해 값을 include
태그의 속성에 세트(말하는 법을 모르는) .
contents_main.xml<layout>
<data>
<variable
name="foo"
type="String"/>
</data>
<TextView
…
android:text="@{foo}" />
…
</layout>
이제 위와 같이 contents_main.xml
에서 사용할 수 있게 되었습니다!
참고
Data Binding Library
DataBinding의 이것
Reference
이 문제에 관하여(DataBinding으로 바인드한 변수를 include 태그로 읽어들이는 다른 레이아웃으로 이용하고 싶다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yasuX/items/39455b7ae610a984de53
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
<layout>
<data>
<variable
name="foo"
type="String"/>
</data>
…
</layout>
<layout>
…
<data>
<variable
name="vm"
type="com.example.MainViewModel" />
</data>
<FrameLayout>
…
<include
android:id="@+id/contents"
layout="@layout/contents_main"
app:foo="@{vm.hoge}" /> /* ←ココ */
</FrameLayout>
</layout>
<layout>
<data>
<variable
name="foo"
type="String"/>
</data>
<TextView
…
android:text="@{foo}" />
…
</layout>
Data Binding Library
DataBinding의 이것
Reference
이 문제에 관하여(DataBinding으로 바인드한 변수를 include 태그로 읽어들이는 다른 레이아웃으로 이용하고 싶다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yasuX/items/39455b7ae610a984de53텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)