2014-05-20 3 views
1

확장 가능한 ListView가 있습니다. 아이가 확장되면 "선택됨"으로 간주되어야합니다. 하위 항목을 선택하면 하위 항목과 하위 항목 모두 다른 배경을 표시해야합니다 (현재 선택된 항목 인 사용자 표시).ExpandableListView 항목의 배경을 변경하는 방법

오른쪽 지금 내가 무엇을 가지고 :

XML

<ExpandableListView 
     android:id="@+id/listViewAccepted" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:choiceMode="singleChoice" 
     android:listSelector="@drawable/custom_selector" > 
    </ExpandableListView> 

목록보기

 setOnGroupClickListener(new OnGroupClickListener() { 

      @Override 
      public boolean onGroupClick(ExpandableListView parent, View view,int groupPosition, long id) { 
       view.setSelected(true); 
       parent.setItemChecked(groupPosition, true); 
       return false; 
      } 
     }); 

선택기

,
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="true"> 
     <shape> 
      <solid android:color="@color/holo_blue_light" /> 
     </shape> 
    </item> 
    <item android:state_selected="true"> 
     <shape> 
      <solid android:color="@color/green" /> 
     </shape> 
    </item> 
    <item android:state_checked="true"> 
     <shape> 
      <solid android:color="@color/green" /> 
     </shape> 
    </item> 
    <item android:state_focused="true"> 
     <shape> 
      <solid android:color="@color/green" /> 
     </shape> 
    </item> 
    <item android:state_activated="true"> 
     <shape> 
      <solid android:color="@color/green" /> 
     </shape> 
    </item> 
    <item> 
     <shape> 
      <solid android:color="@color/transparent" /> 
     </shape> 
    </item> 
</selector> 

답변

5

다음과 같이 그룹보기가 변경됩니다. 재정의 된 메서드는 내 사용자 정의 ExpandableListAdapter에 포함되어 있습니다.

@Override 
public View getGroupView(int groupPosition, boolean isExpanded, 
     View view, ViewGroup parent) 
{ 
    LinearLayout bevGroup = (LinearLayout) view.findViewById(R.id.myid); 

    if(isExpanded) 
    { 
     bevGroup.setBackgroundColor(context.getResources().getColor(R.color.bgGroupBlack)); 
    } 
    else 
    { 
     bevGroup.setBackgroundColor(context.getResources().getColor(R.color.bgTransparent)); 
    } 
} 

확장되었을 때만 볼 수있는 자식은 항상 그 색상입니다.

+0

나는 선택할 때만 보이기 때문에 아이는 배경으로 '선택된'색만 있어야한다는 분명한 사실을 눈치 채지 못했습니다. 완벽하게 btw. – fernandohur

+0

끝내 주셔서 감사합니다. –

+0

R.id.midid 란 무엇입니까? – VVB