0

オブジェクトを追加しようとしていますがTableRow、次のエラーが発生しました:

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)

これが私のコードです:

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

これをどのように達成するかについてのアイデアはありますか?

4

1 に答える 1