2011-10-09 1 views
0

나는 android ExpandableListView 위젯을 사용하려고합니다. 클래스 아이템이 있는데 아이템에 대한 많은 속성을 가지고 있습니다. 내 목록이 좋아 보이길 원합니다. 그룹 목록의 요소에는 항목의 이름과 다른 중요한 속성 만 표시됩니다. 항목을 클릭하면 해당 항목의 모든 속성이 확장되어 표시됩니다. 그래서 기본적으로 나에게 그룹과 자식 요소는 동일하며 확장되는 내 목록에는 항상 하나의 요소 만 있습니다. 이를 위해 어댑터를 작성하는 올바른 방법은 무엇입니까? 이런 식으로 시도했지만 항상 요소를 확장하려면 null 포인터 exeptions, 제공합니다.android : 그룹 및 하위에 대해 동일한 클래스를 사용하는 ExpandableListAdapter의 방법은 무엇입니까?

private Context context; 
private ArrayList<VCDR> groups; 
private ArrayList<ArrayList<VCDR>> children; 


public ExpandableAdapter(Context context, ArrayList<VCDR> groups) { 
    this.context = context; 
    this.groups = groups; 
    this.children= new ArrayList<ArrayList<VCDR>>(); 
    this.children.add(groups); 

} 


public Object getChild(int groupPosition, int childPosition) { 

    return children.get(groupPosition).get(childPosition); 
} 

답변

0

당신이하고있는 일은 생성자의 자식 다차원 배열에 그룹 ArrayList를 지정할 때 이상합니다. 나는 그것을 다시 검토 할 것이다. 공식 문서의 예를 살펴보십시오. http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/ExpandableList1.html

기본적으로 그룹 머리글 (예 : 머리글 1, 머리글 2 등)에 대한 배열이 있습니다. 그리고 자녀 다차원 배열에서 그룹 배열의 각 머리글에 따라 특성을 할당하려고합니다. 당신은 반대 ... 아놀드, 배리, 척 아이의 0 인덱스에 포함 된 배열을보고 싶은데, '사람 이름'에 대한, 그래서

private String[] groups = { "People Names", "Dog Names", "Cat Names", "Fish Names" }; 
    private String[][] children = { 
      { "Arnold", "Barry", "Chuck", "David" }, 
      { "Ace", "Bandit", "Cha-Cha", "Deuce" }, 
      { "Fluffy", "Snuggles" }, 
      { "Goldy", "Bubbles" } 
    }; 

:

문서는이 예제를 제공합니다 이것은 ArrayList를 사용하기 위해 쉽게 재 작성 될 수 있습니다.

0

제가 할 수 있었던 일은 제가 할 일이었습니다. 나는 그것이 적절한 방법인지는 모르겠지만 작동하는 것 같습니다. 표시 할 모든 데이터가 같은 클래스에 있으므로 ArrayList를 하나만 사용합니다. 그것은 기본적으로보기 - 상세보기 애플 리케이션. 그룹에는 오직 하나의 자식 만 있습니다. 그런 식으로 괜찮다고 생각하니? 또는 나중에 구현시 일관성 문제가 발생할 수 있습니다.

public ExpandableAdapter(Context context, ArrayList<VCDR> groups) { 
    this.context = context; 
    this.groups = groups;   
} 
@Override 
public Object getChild(int groupPosition, int childPosition) { 

    return groups.get(groupPosition); 
} 

@Override 
public long getChildId(int groupPosition, int childPosition) {  
    return groupPosition; 
} 
@Override 
public int getChildrenCount(int groupPosition) { 
    return 1; 
}