2015-11-05 3 views
0

Я пытаюсь отображать данные из встроенной базы данных SQLite в таблице в пользовательском интерфейсе Android, но он не работает должным образом. Вот что у меня есть:Нужна помощь, чтобы мой Android TableLayout работал правильно

activity_main.xml

<TableLayout 
    android:id="@+id/data_table" 
    android:stretchColumns="3" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <TableRow> 
     <TextView android:layout_column="1" android:text="id" android:layout_width="0dp" android:layout_weight="1" /> 
     <TextView android:layout_column="2" android:text="firstname" android:layout_width="0dp" android:layout_weight="1" /> 
     <TextView android:layout_column="3" android:text="lastname" android:layout_width="0dp" android:layout_weight="1" /> 
    </TableRow> 
</TableLayout> 

MainActivity.java

List<People> listOfPeople = databaseHelper.getAllPeople(); 

TableLayout myTableLayout = (TableLayout) findViewById(R.id.data_table); 

for(People person : listOfPeople){ 
    TableRow newTableRow = new TableRow(this); 
    TableRow.LayoutParams rowParams = new TableRow.LayoutParams(); 
    newTableRow.setLayoutParams(rowParams); 

    TextView idTV = new TextView(this); 
    idTV.setLayoutParams(new TableRow.LayoutParams(1)); 
    idTV.setText(person.getId()); 

    TextView firstnameTV = new TextView(this); 
    firstnameTV.setLayoutParams(new TableRow.LayoutParams(2)); 
    firstnameTV.setText(person.getFirstname()); 

    TextView lastnameTV = new TextView(this); 
    lastnameTV.setLayoutParams(new TableRow.LayoutParams(3)); 
    lastnameTV.setText(person.getLastname()); 

    newTableRow.addView(idTV); 
    newTableRow.addView(firstnameTV); 
    newTableRow.addView(lastnameTV); 

    myTableLayout.addView(newTableRow); 
} 

отображается таблица и данные, но данные в строках, которые я построил из база данных все смотается вместе и нечитабельно. Если бы я сопоставлял это с веб-разработкой, похоже, что все данные находятся в одной ячейке строки таблицы.

Я очень новичок в разработке Android (бывший разработчик JSP), и то, что у меня есть здесь, я попытался объединить результаты поиска Google. Мне нужно использовать TableLayout, поэтому макет сетки (или любой другой макет) не будет работать.

EDIT:

я добавил цвета фона мои «клетки» и обнаружил, что они находятся в разных клетках. Проблема, по-видимому, в том, что они не распространяются правильно, так как я не уверен, как добавить «layout_width» и «layout_weight» в ячейки Java. По крайней мере, я думаю, это и есть проблема.

+0

Пожалуйста, разместите изображение, что вы хотите, чтобы оно выглядело. Вероятно, вы захотите использовать [RecyclerView] (http://developer.android.com/reference/android/support/v7/widget/RecyclerView.html) здесь. – Naveed

+0

Я хочу, чтобы он выглядел как таблица данных (Excel, HTML и т. Д.). Столбцы с заголовками, затем строки под соответствующими данными. – Brian

ответ

0

Просто измените XML на это:

<TableLayout 
android:id="@+id/data_table" android:stretchColumns="1" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 
<TableRow> 
    <TextView android:layout_column="1" android:layout_weight="1" android:text="id" /> 
    <TextView android:layout_column="2" android:layout_weight="1" android:text="firstname" /> 
    <TextView android:layout_column="3" android:layout_weight="1" android:text="lastname" /> 
</TableRow> 

Убедитесь, что также установить layout_weight 1, для всех TextViews добавленных кода Java.

+0

Хотя я не указал его здесь, у меня есть layout_weight и layout_width, установленные в моем XML-файле. Я добавил цвет фона в таблицу «Ячейки» и теперь вижу, что они не все смазаны вместе, а они просто не распределяются должным образом. Я также отредактирую свое оригинальное сообщение с этой информацией. – Brian

+0

Вы пропустили андроид: stretchColumns = "1" атрибут в теге TableLayout. –

+0

Извините ... на самом деле я это сделал, но забыл добавить это к моему вопросу SO; он есть сейчас. Мои заголовки столбцов распределяются совершенно равномерно, но не все остальные части тела таблицы. Когда я устанавливаю ширину, используя «idTV.setWidth (0)»; похоже, он хочет распределить равномерно, но мне нужен атрибут «вес», но не могу понять, как это сделать на Java. – Brian

Смежные вопросы