2012-04-23 12 views
0

의 가시성을 조작, 나는)합니다 (getChildView에 기능을 Expandible 목록의 일부 어린이 행을 조작하기 위해 노력하고있어하지만 다음 코드는 제대로 작동하지 않는 것 같다안드로이드 - 일부 Expandible 목록의 자녀 안드로이드에서

@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();   
} 

그럼에도 불구하고, 나는 가시성을 modifing에 달성하지 않았습니다.