2012-09-18 5 views
2

내 응용 프로그램에는 Listview가 있고 Listview의 각 항목에는 GridLayout이 있습니다. 그리고 어댑터 클래스를 통해 GridLayout에 사용자 정의보기를 추가합니다. GridLayout에 추가 된 뷰의 크기는 동일하지 않습니다. 보기마다 다를 수 있습니다. 의 getView() 어댑터는 나의 코드,Android : GridLayout 용 구분선

for (int i = 0,j=0; i < (data.get(position).getItems().size() * 2) && j< (data.get(position).getItems().size()); i=i+2,j++) { 
      View childView=getChildView(position, j); 
      childView.setBackgroundColor(Color.CYAN); 
      Log.i("ChildView Height",childView.getLayoutParams().height+" length"); 
      holder.order_row.addView(childView, i); 
      holder.order_row.addView(getItemSeparatorView(minHeight),i+1); 
     } 

private View getChildView(int pos, int i) { 

     //Log.i("position in child", pos + ""); 

     View child = inflater.inflate(R.layout.order_item, null); 
     InnerViewHolder inholder = new InnerViewHolder(); 
     inholder.name = (TextView) child.findViewById(R.id.order_name); 
     inholder.items = (ListView) child.findViewById(R.id.order_list); 

     inholder.name.setText(data.get(pos).getItems().get(i).getItemName()+":"); 
     inholder.name.setTextColor(itemColor); 
     inholder.items.setAdapter(new OrderItemOptionAdapter(context, data 
       .get(pos).getItems().get(i).getOptions(),itemColor)); 
     int size = data.get(pos).getItems().get(i).getOptions().size(); 
     Log.i("childview", "called" + i+ "size is "+size); 
     if (size > 7) { 
      child.setLayoutParams(new GridLayout.LayoutParams(new LayoutParams(
        260, 80 + (size * 20)))); 

     } else if(size <=7 && size>=4){ 
      child.setLayoutParams(new GridLayout.LayoutParams(new LayoutParams(
        260, 450))); 
     } else { 
      child.setLayoutParams(new GridLayout.LayoutParams(new LayoutParams(
        260, 250))); 
     } 

     return child; 
    } 
    public View getItemSeparatorView(int h){ 
     //Log.i("seperator","called and height is "+h); 
     View sep = inflater.inflate(R.layout.item_seperator, null); 
     sep.setLayoutParams(new GridLayout.LayoutParams(new LayoutParams(2,h))); 
     return sep; 
    } 

그리고 내 XML 코드입니다.

<GridLayout 
     android:id="@+id/order_row" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_weight="1" 
     android:columnCount="6" 
     android:orientation="horizontal" 
> </GridLayout> 

childViews의 최대 높이를 가진 구분선을 추가하고 싶습니다. 그리고 경우에 따라 gridlayout에 2 개 이상의 행이있을 수 있으므로 구분보기의 높이는 GridLayout 행의보기의 최대 높이에 따라 변경되어야합니다.

0,2,4 등의 인덱스를 가진 모든 하위 뷰를 먼저 추가 할 수 있다면. 그리고 Childviews의 최대 높이를 계산하십시오. 최대 높이를 계산 한 후 1,3,5,7etc와 같은 인덱스가있는 분리 뷰를 추가 할 수 있습니다.

제게 올바른 방법을 알려주십시오. 감사합니다. .

+0

minHeight = 260; 나는 고정 크기 안드로이드 장치 에이 응용 프로그램을 않습니다. – Sridhar

+0

GridLayout에 추가 할 뷰의 getChildView() – Sridhar

+0

두 자식 뷰 사이의 구분선 뷰를위한 getItemSeparatorView (int) – Sridhar

답변

-6

세트 Verticalspacing 그리드보기 XML 파일의 수평 간격

<GridView 
     android:horizontalSpacing="10dp" 
     android:horizontalSpacing="10dp" > 

    </GridView> 

내가 당신을 도움이되기를 바랍니다.