Android Java Таблица из двумерного массива

Есть фрагмент, в который вывожу таблицу, данные беру из двумерного массива. Не могу разобраться как правильно делать. Нужно ли связывать xml и java для этого? Все данные вывожу через TextView. Но если я програмно создаю новые TextView ничего не прописывая в xml проблем нет, кроме не очень понятного способа настройки внешнего вида. Если же я ячейки определяю в xml то получаю ошибку при компиляции java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.

Собственно говоря, как правильно делать в этой ситуации ? насколько важны файлы xml ?

@Override public void onViewCreated(View view, Bundle savedInstanceState) {
    SocketComand mConnect = new SocketComand();

    new Thread(new Runnable() {
        @Override
        public void run () {
            try {


                mConnect.openConnection();
                String result[][] = mConnect.chemLeftOvers();
                // Разблокирование кнопок в UI потоке

                getActivity().runOnUiThread(new Runnable() {
                    @Override
                    public void run() {


                        int rows = result.length;
                        int COLUMNS = 3;
                        TableLayout tableLayout = (TableLayout) getView().findViewById(R.id.scrollView);

                        for (int i = 0; i < rows; i++) {

                            TableRow tableRow = (TableRow) getView().findViewById(R.id.table);

                            tableRow.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT,
                                    TableRow.LayoutParams.MATCH_PARENT));

                            TextView title = (TextView) getView().findViewById(R.id.ChemTitle);
                            title.setText(result[0][0]);
                            tableRow.addView(title);

                                TextView leftOverss = (TextView) getView().findViewById(R.id.lefts);
                            leftOverss.setText(result[0][1]);
                                tableRow.addView(leftOverss);

                            TextView dimension = (TextView) getView().findViewById(R.id.dimensionChem);
                            dimension.setText(result[0][2]);
                            tableRow.addView(dimension);

                            TextView barcode = (TextView) getView().findViewById(R.id.barcode);
                            barcode.setText(result[0][3]);
                            tableRow.addView(barcode);




                            tableLayout.addView(tableRow, i);
                        }


                    }
                });

                Log.d("SOCKET: ", "Соединение установлено");
                Log.d("SOCKET: ", "(mConnect != null) = "
                        + (mConnect != null));
            } catch (Exception e) {
                Log.e("SOCKET: ", e.getMessage());

            }
        }
    }).

            start();
}

Сам файл разметки

 <?xml version="1.0" encoding="utf-8"?>
 <TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/scrollView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/white"
android:stretchColumns="0, 1, 2, 3"
tools:context=".ui.chemical.LeftOversFragment">

<TableRow
    android:id="@+id/table"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

<TextView
    android:id="@+id/ChemTitle"
    android:text="" >
</TextView>

<TextView
    android:id="@+id/lefts"

    android:textStyle="bold"
    android:typeface="serif" >
</TextView>
    <TextView
        android:id="@+id/dimensionChem"

        android:textStyle="bold"
        android:typeface="serif" >
    </TextView>
<TextView
    android:id="@+id/barcode"

    android:textStyle="bold"
    android:typeface="serif" >
</TextView>
</TableRow>

Ответы (0 шт):