2012-04-23 35 views
0

在Android中的知名度,我試圖操縱可膨脹名單的一些孩子排在getChildView()功能,但接下來的代碼似乎不能正常工作:Android的 - 操縱在某些可膨脹名單的孩子

@Override 
public View getChildView(int groupPosition, int childPosition, 
    boolean isLastChild, View convertView, ViewGroup parent) { 
     View childRow = inflater.inflate(R.layout.buslinescheduleitem, null); 
     if(childPosition%4==0) { 
      int k = 0; 
      TextView textView; 
      while((childPosition+k) < getChildrenCount(groupPosition) && k < 4){ 
       textView= (TextView) childRow.findViewById(textViewIds[k]); 
       textView.setText(getChild(groupPosition, childPosition+k)); 
       k++; 
      } 
      childRow.setVisibility(View.VISIBLE); 
     } 
     else { childRow.setVisibility(View.GONE); } 
     return childRow; 
} 

儘管有些子行被修改爲可見性GONE,並且視圖尚未顯示,但groupView的「洞」不應該在哪裏(就像這些行具有INVISIBLE值的可見性一樣)。當可擴展列表創建時隱藏一些子行是否可行?

回答

0

固定。我只爲每四行創建一行:

@Override 
public View getChildView(int groupPosition, int childPosition, 
    boolean isLastChild, View convertView, ViewGroup parent) { 
    View childRow = inflater.inflate(R.layout.buslinescheduleitem, null); 
     int k = 0; 
     TextView textView; 
     while(((childPosition*NUMBER_ROWS)+k) < getChildrenSize(groupPosition) && k < NUMBER_ROWS){ 
      textView= (TextView) childRow.findViewById(textViewIds[k]); 
      textView.setText(getChild(groupPosition, (childPosition*NUMBER_ROWS)+k)); 
      k++; 
     } 
     while(k < NUMBER_ROWS){ 
      textView= (TextView) childRow.findViewById(textViewIds[k]); 
      textView.setVisibility(View.GONE); 
      k++; 
     } 
     return childRow;  
} 

@Override 
public int getChildrenCount(int groupPosition) { 
    // TODO Auto-generated method stub 
    if(!isInverted) return (int) Math.ceil((float)busLine.getBusScheduleRound().get(groupPosition).getHours().size()/(float)NUMBER_ROWS); 
    else return (int) Math.ceil((float)busLine.getBusScheduleReturn().get(groupPosition).getHours().size()/(float)NUMBER_ROWS); 
} 

public int getChildrenSize(int groupPosition){ 
    if(!isInverted) return busLine.getBusScheduleRound().get(groupPosition).getHours().size(); 
    else return busLine.getBusScheduleReturn().get(groupPosition).getHours().size();   
} 

儘管如此,我還沒有實現修改可見性。