2013-05-11 10 views
0

에 여러 개체를 추가하지만 다음과 같은 오류가 도착하기 : 약어떻게 <code>TableRow</code> 일부 개체를 추가하기 위해 노력하고있어 행

public class LruView extends TableLayout 
{ 
    private Context c; 

    public LruView(Context context, AttributeSet attrs) 
    { 
     super(context, attrs); 

     this.c = context; 
    } 

    public LruView(Context context) 
    { 
     super(context); 

     this.c = context; 
    } 

    public void setData(BaseAdapter mAdapter) 
    { 
     int columnCounter = 0; 
     int totalColumns = getNumColumns(); 

     for (int i = 0; i < mAdapter.getCount(); i++) 
     { 
      if (i < totalColumns) 
      { 
       TableRow mTableRow = new TableRow(c); 

       for (int j = 0; j < totalColumns; j++) 
       {     
        View mView = mAdapter.getView(columnCounter, null, null); 

        mTableRow.addView(mView); 

        this.addView(mTableRow); 

        columnCounter++;      
       } 
      } 
     } 
    } 

    public int getNumColumns() 
    { 
     float scalefactor = getResources().getDisplayMetrics().density * 100; 

     int number = ((Activity) c).getWindowManager().getDefaultDisplay().getWidth(); 
     int columns = (int) ((float) number/(float) scalefactor); 
     int deviceOrientation = getResources().getConfiguration().orientation; 

     if (Configuration.ORIENTATION_LANDSCAPE == deviceOrientation) 
      return ((columns - 3) <= 2) ? 3 : (columns - 3); 
     else 
      return ((columns - 1) <= 2) ? 2 : (columns - 1); 
    } 
} 

어떤 아이디어 : 여기

05-11 13:43:34.494: E/AndroidRuntime(3258): FATAL EXCEPTION: main 
05-11 13:43:34.494: E/AndroidRuntime(3258): java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first. 
05-11 13:43:34.494: E/AndroidRuntime(3258):  at android.view.ViewGroup.addViewInner(ViewGroup.java:3618) 
05-11 13:43:34.494: E/AndroidRuntime(3258):  at android.view.ViewGroup.addView(ViewGroup.java:3489) 
05-11 13:43:34.494: E/AndroidRuntime(3258):  at android.widget.TableLayout.addView(TableLayout.java:425) 
05-11 13:43:34.494: E/AndroidRuntime(3258):  at android.view.ViewGroup.addView(ViewGroup.java:3434) 

은 내 코드입니다 이걸 어떻게 완성 할까? 나는에 대한 레이아웃을 만들 것입니다 :

View mView = mAdapter.getView(columnCounter, null, null); 

그래서, 나는이 다음을 수행합니다 :

+1

전체 로그와 수업 시작 부분을 게시하십시오. 나는 틀린 것 같아요 루프'this.addView (mTableRow); '줄 및 "이"추가되지 않았습니다. –

+0

@YoannHercouet 제발 편집하십시오. – iSun

답변

0

문제는이 라인에 이미 부모가 당신의 TableRow에보기를 추가하려고하는 것입니다 테이블 행에 추가하는 데 사용하십시오.

View mView = mAdapter.getView(columnCounter, null, null); 

을 물론, 그것을 팽창 한 후, 레이아웃에 대한 MVIEW의 데이터를 사용 : 그럼 나는이 같은, 당신이했던 것과 같은 방법으로 원하는 데이터를 얻을. 그런 다음 레이아웃을 TableRow에 추가합니다. 기본적으로 다음과 같습니다.

LayoutInflater inflater = LayoutInflater.from(context); 
View layout = (View)inflater.inflate(R.layout.my_view_to_add); 
View mView = mAdapter.getView(columnCounter, null, null); 
//....get widgets from layout and set their data(i.e: text in a TextView)using what you fetch from mView. 
.... 
mTableRow.addView(layout); 
+0

일부 디버깅 후 실제 문제가이 줄에 있음을 알게되었습니다. ->'TableRow mTableRow = new TableRow (c);' – iSun

관련 문제