2014-11-09 2 views
2

테이블 레이아웃에 실용적인 테이블 행을 추가 할 수 없습니다. 나는 수평과 수직 모두 여기에 생성하는 뷰를 스크롤이고 테이블과 유사한보고 문제는 TableRow표 행 지정된 자식에 이미 상위 항목이 있습니다. 먼저 부모의 removeView()를 호출해야합니다.

/* 
* reportLayout is tablelayout by findViewById 
* i am setting view inside Fragment 
*/ 
public void redrawReport(){ 
    reportLayout.removeAllViews(); 
    int count=0; 
    for(SaleReportModel model:Detailist.getReportItems()){ 
     TableRow headerRow= new TableRow(getActivity()); 
     headerRow.removeAllViews(); 

     //Error Caused here in this line 

     headerRow.addView(getTextView(model.getPrdcode(), false,count*4),count); 
     headerRow.addView(getTextView(model.getSubtype(), false,count*4+1),count); 
     headerRow.addView(getTextView(""+model.getDispatchQty(), false,count*4+2),count); 
     headerRow.addView(getTextView(""+model.getDispatchvalue(), false,count*4+3),count); 
     reportLayout.addView(headerRow,new TableLayout.LayoutParams(TableLayout.LayoutParams.WRAP_CONTENT,TableLayout.LayoutParams.WRAP_CONTENT)); 
     count+=1; 
    } 
} 
public TextView getTextView(String data,boolean isHeader,int id){ 
    TextView textView= new TextView(getActivity()); 
    textView.setLayoutParams(new LayoutParams(TableLayout.LayoutParams.WRAP_CONTENT,TableLayout.LayoutParams.WRAP_CONTENT)); 
    textView.setText(data); 
    textView.setId(id); 
    textView.setGravity(Gravity.CENTER); 
    //textView.setTextColor(Color.BLACK); 
    return mDateFrom; 

} 

오류 로그를 추가하는이 :

11-09 12:04:40.299: E/AndroidRuntime(19569): FATAL EXCEPTION: main 
11-09 12:04:40.299: E/AndroidRuntime(19569): java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first. 
11-09 12:04:40.299: E/AndroidRuntime(19569): at android.view.ViewGroup.addViewInner(ViewGroup.java:3739) 
11-09 12:04:40.299: E/AndroidRuntime(19569): at android.view.ViewGroup.addView(ViewGroup.java:3610) 
11-09 12:04:40.299: E/AndroidRuntime(19569): at android.view.ViewGroup.addView(ViewGroup.java:3555) 
11-09 12:04:40.299: E/AndroidRuntime(19569): at com.kiss.erp.view.fragment.SalesFragment.redrawReport(SalesFragment.java:254) 
11-09 12:04:40.299: E/AndroidRuntime(19569): at com.kiss.erp.view.fragment.SalesFragment.showdetail(SalesFragment.java:196) 
11-09 12:04:40.299: E/AndroidRuntime(19569): at com.kiss.erp.view.fragment.SalesFragment.onClick(SalesFragment.java:110) 

이 도와주세요.

TableLayout의 상위 항목으로 인해 여기에 xml이 표시 될 수 있습니다. 사전에

<ScrollView 

android:id="@+id/layoutReport" 
android:layout_height="match_parent"   
android:scrollbars="horizontal|vertical" 
android:layout_width="match_parent"  
android:layout_marginTop="5dip"  
android:scrollbarStyle="outsideInset" 
android:fillViewport="true"> 

<HorizontalScrollView 
    android:id="@+id/horizontalView" 
    android:layout_height="wrap_content"  
    android:scrollbars="horizontal|vertical" 
    android:layout_width="wrap_content"  
    android:layout_marginTop="5dip"> 

    <TableLayout 
     android:id="@+id/tlGridTable" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" > 
</TableLayout> 
</HorizontalScrollView> 

감사합니다.

답변

4

getTextView의 경우 textView 대신 mDateForm을 반환합니다. mDateForm에는 이미 상위 뷰가 있으므로 예외가 발생합니다. 올바른 구현은 다음과 같이해야합니다 :

public TextView getTextView(String data,boolean isHeader,int id){ 
    TextView textView= new TextView(getActivity()); 
    textView.setLayoutParams(new LayoutParams(TableLayout.LayoutParams.WRAP_CONTENT,TableLayout.LayoutParams.WRAP_CONTENT)); 
    textView.setText(data); 
    textView.setId(id); 
    textView.setGravity(Gravity.CENTER); 
    //textView.setTextColor(Color.BLACK); 
    return textView; 

} 
+0

thnx, 나는 어리석은 일을 잊어 버렸습니다. –

관련 문제