2011-07-11 10 views
2

みんな私は、彼らが崩壊しているとき、彼らは通常の色に戻って拡大しているとき、私は...、それぞれのグループの色を変更しよう 、私の拡張可能なリストビューのための3つのグループを持っている拡張リストビュー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メソッド、

上のp

単に使用ブールisExpandedとしてこのようにそれを実行します。

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

0

:)解くので、これをやったことがいただければ幸いですすべてです:代わりに変更するのでは1つのグループの色は、あなたが望むどんな色でも、同時に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; 
} 
関連する問題