2013-08-21 3 views
0

임의의 하위 뷰를 포함하는 사용자 지정 ViewGroup을 만들었으며이를 채울 것으로 예상됩니다. 그것은 그것의 아이들의 ID를 알 필요가있다, 그래서 나는 arrays.xml에 ID의 배열을 정의하고 나는이 같은 내 사용자 그룹에 속성으로 그 배열을 전달 해요 :arrays.xml에 ID 배열 정의?

my_layout.xml :

<com.example.MyLayout 
      ... 
      custom:children="@array/four_children"> 

      <TextView ... 
        android:id="@+id.child1" /> 

      <TextView ... 
        android:id="@+id.child2" /> 

      <TextView ... 
        android:id="@+id.child3" /> 

      <TextView ... 
        android:id="@+id.child4" /> 

    </com.example.MyLayout> 

arrays.xml는 : 설계 목표 중 하나가 완전히 XML로 레이아웃을 정의하기 때문에

<array name="four_children"> 
    <item>@id/child1</item> 
    <item>@id/child2</item> 
    <item>@id/child3</item> 
    <item>@id/child4</item> 
</array> 

나는이 방법을 선택했다.

기본적으로 제 질문은 뷰 패턴 ID 배열을 안티 패턴 또는 그렇지 않으면 위험한 것으로 사용하고 있습니까?

답변

1

내가 좋아하지 않는 주된 점은 두 위치 (아이디 배열과 자식 뷰 자체)에 동일한 데이터가 있다는 것입니다. 문제를 피하려면 두 버전을 동기화 된 상태로 유지해야합니다. 문제는 두 개의 데이터 세트를 서로 다른 파일에 저장함으로써 악화됩니다.

당신이하고있는 일에 대해 더 많이 알지 못하면 대안을 제안하기는 어렵지만, 나는 그것을 찾는 것이 좋습니다. 커스텀 레이아웃을 팽창시키고 ID를 수집 한 후에 아이들을 반복 할 수는 없습니까? (onFinishInflate에서이 작업을 수행하므로 어린이도 부 풀릴 수 있습니다.)