2015-12-13 47 views
0

我有一个ExpandableListView,我希望每个孩子都能显示不同的背景,具体取决于组和子位置。到目前为止,我从适配器活动做,在@Override getChildView无法通过编程设置ExpandableListView的孩子的背景

这里是我的代码示例现在

 @Override 
public View getChildView(int groupPosition, final int childPosition, 
         boolean isLastChild, View convertView, ViewGroup parent) { 

    final String childText = (String) getChild(groupPosition, childPosition); 



    if (convertView == null) { 
     LayoutInflater infalInflater = (LayoutInflater) this._context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     convertView = infalInflater.inflate(R.layout.list_item, null); 
    } 
switch (groupPosition) { 
     case 0: 
      switch(childPosition){ // 
       case 0: 
        convertView.setBackgroundResource(R.color.a1); 
        break; 
       case 1: 
        convertView.setBackgroundResource(R.color.a2); 
        break; 
       case 3: 
        convertView.setBackgroundResource(R.color.a3); 
        break; 
       case 4: 
        convertView.setBackgroundResource(R.color.a4); 
        break; 
      } 
      break; 
     case 1: 
      switch(childPosition){ 
       case 0: 
        convertView.setBackgroundResource(R.color.b1); 
        break; 
       case 1: 
        convertView.setBackgroundResource(R.color.b2); 
        break; 
       case 3: 
        convertView.setBackgroundResource(R.color.b3); 
        break; 
       case 4: 
        convertView.setBackgroundResource(R.color.b4); 
        break; 
      } 
      break; 
     case 2: 
      switch(childPosition) 
       case 0: 
        convertView.setBackgroundResource(R.color.c1); 
        break; 
       case 1: 
        convertView.setBackgroundResource(R.color.c2); 
        break; 
       case 3: 
        convertView.setBackgroundResource(R.color.c3); 
        break; 
       case 4: 
        convertView.setBackgroundResource(R.color.c4); 
        break; 
      } 
      break; 
    } 

,问题是,当我打开第二个(#1 ),第三(#2)组父母,孩子们像第一个(#0)组中那样染色。

这个开关框架工作得很好,当然,“@color”中的所有颜色都不相同。 任何提示?

回答

1

您在创建视图时设置了背景颜色。由于列表视图回收视图,当视图重新使用时,颜色不会改变。

+0

Merci Guillaume。其实它是一个ExpListView。 你能预见这个问题的任何想法吗? –

+0

更改“if(convertView == null)”块之外的颜色 –

+0

Merci encore,Guillaume。我把所有的开关放在 之间,最终String childText =(String)getChild(groupPosition,childPosition); 和 if(convertView == null)LayoutInflater infalInflater =(LayoutInflater)this._context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); convertView = infalInflater.inflate(R.layout.list_item,null); 它崩溃。其实我早就想到了它。任何想法? –