2011-07-11 53 views
2

傢伙,我有3個組對我的列表視圖可擴展, 我嘗試分別改變各組的顏色,當他們擴大和恢復正常的顏色,當他們正在崩潰...可擴展的ListView onGroupExpanded&onGroupCollapsed

我現在面臨的問題是,當我點擊第一組,它改變了最後一組的顏色...,所以我可以說,他們的顏色隨機變化,而不是相應的組。

這裏是簡單的代碼,我使用:

listView.setOnGroupClickListener(new OnGroupClickListener() 
    { 

     @Override 
     public boolean onGroupClick(ExpandableListView parent, View v, int position, long id) 
     { 
      v.setBackgroundResource(R.drawable.group_bar_press); 

      Toast.makeText(getBaseContext(), "Group clicked", Toast.LENGTH_LONG).show(); 
      return false; 
     } 
    }); 

好,這就是我希望它會被解決:)

回答

8

我很馬虎:對

只是我getView方法,在這裏我用回我的看法使用布爾isExpanded,

,做這樣的:

if(isExpanded){ 
    convertView.setBackgroundResource(R.drawable.press); 
}else{ 
    convertView.setBackgroundResource(R.drawable.normal); 
} 

0

我面臨同樣的問題,所以這樣做:相反的變化一組的顏色,同時改變全部3種顏色,無論你想要什麼顏色。

可能不是很好的解決方案,但爲我工作。

1

您必須修改ExpandableList適配器中的getGroupView方法:

if (isExpanded) { 
     convertView.setBackgroundColor(0xFF0db6a3); 
    } else { 
     convertView.setBackgroundColor(0xFFFFFFFF); 
    } 

    return convertView; 

和所有共同作用的結果是這樣的:

public View getGroupView(int groupPosition, boolean isExpanded, 
     View convertView, ViewGroup parent) { 

    String headerTitle = (String) getGroup(groupPosition); 
    if (convertView == null) { 
     LayoutInflater infalInflater = (LayoutInflater) this._context 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     convertView = infalInflater.inflate(R.layout.list_group, null); 
    } 

    TextView lblListHeader = (TextView) convertView 
      .findViewById(R.id.lblListHeader); 
    lblListHeader.setTypeface(null, Typeface.BOLD); 
    lblListHeader.setText(headerTitle); 

    if (isExpanded) { 
     convertView.setBackgroundColor(0xFF0db6a3); 
    } else { 
     convertView.setBackgroundColor(0xFFFFFFFF); 
    } 

    return convertView; 
}