2016-10-09 2 views
1

가장 많이 사용되는 MVVM 프레임 워크는 목록 유형 속성에 대해 일종의 루프를 허용합니다. 예를 들어 녹아웃은 foreach-binding입니다. 그것은 당신이 list 속성의 요소를 반복 할 수있게 해주고 각 요소에 대해 foreach-loop에 포함 된 마크 업이 복제됩니다. 사본 내에서 현재 요소는 데이터 바인딩의 컨텍스트로 사용됩니다.안드로이드 데이터 바인딩을위한 for-loop를 수행하려면 어떻게해야합니까?

저는 Android에서 비슷한 것을 찾고 있었지만 목록을 특정 UI 요소에 바인딩 할 가능성을 보았습니다. 그러나 이것은 코드에서 UI 요소를 만들어야하기 때문에 선언 성 측면에서 나쁘다.

안드로이드에서 데이터 바인딩 기능을 사용하여 비슷한 것을 시뮬레이션하는 방법이 있습니까? 그렇지 않은 경우 해결 방법이 있습니까? 또는 바인딩 구문을 확장하는 방법?

답변

0

그대로는 아닙니다. android 데이터 바인딩 라이브러리는 정적 XML 레이아웃을 사용하고 속성에 값을 바인딩합니다. 정적 레이아웃을 동적으로 생성하는 것은 지원되지 않습니다. 뷰 계층 구조를 동적으로 생성하려면 어댑터와 함께 뷰를 사용해야합니다. 데이터 바인딩으로 할 수있는 일입니다. 목록을 RecyclerVier에 바인딩하기위한 데이터 바인딩 어댑터를 직접 만드십시오. 예를 들어, 한 쌍의 binding:iteratorbinding:layout 속성에 바인딩하고 데이터 바인딩 어댑터 내에 RecyclerVier.Adapter을 설정할 수 있습니다.

1

@tynn이 대답했듯이 이런 종류의 API는 사용할 수 없습니다.

동일한 결과를 얻으려면 XML 자체에서 RecyclerView 용 어댑터를 설정할 수 있습니다. MVVM 라이브러리에서이 기능을 구현했습니다. Setup RecyclerView from XML itself을 참조하십시오. 같은 모양

당신의 XML은 다음과 같습니다

<android.support.v7.widget.RecyclerView 
    bind:items="@{vm.itemVms}" 
    bind:layout_vertical="@{true}" 
    bind:view_provider="@{@layout/row_item}" /> 

<!-- Same arguments for ViewPager--> 
<android.support.v4.widget.ViewPager 
    bind:items="@{vm.itemVms}" 
    bind:view_provider="@{@layout/row_item}" /> 

것은 또한 당신의 ViewModel에 따라 아이 뷰의 다른 종류를 표시하기위한 지원이있다. Using different types of child views

+0

큰 리소스와 흥미로운 프로젝트를 참조하십시오! 감사! – monacotoni

관련 문제