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>