Мне нужно создать более одного TableLayout с различным количеством строк в одном XML-макете.Создание более одного TableLayout в том же макете
В моем основном макете у меня пустой LinearLayout, как показано ниже:
<LinearLayout android:id="@+id/resultsLayout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
</LinearLayout>
Я заявляю это в моей деятельности в качестве так:
private LinearLayout linearResultsLayout;
linearResultsLayout = (LinearLayout) findViewById(R.id.resultsLayout);
Я добавил table_layout.xml и А table_row.xml в моей папке Layouts:
Table_layout.xml:
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/resultsTable"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:weightSum="99"
android:background="@drawable/curvedbg"
>
</TableLayout>
Table_row.xml:
<?xml version="1.0" encoding="utf-8"?>
<TableRow xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView android:id="@+id/row_header" android:layout_weight="33" />
<TextView android:id="@+id/downstream" android:layout_weight="33"/>
<TextView android:id="@+id/upstream" android:layout_weight="33"/>
</TableRow>
Моя цель состоит в том, чтобы раздуть таблицу, а затем надуть, как никогда много строк я требую, чтобы вновь надувается таблицы в то же время передачи данных в виде TextViews. Код ниже должен дать вам представление о том, что я пытаюсь сделать. Однако это не работает. Исключение нулевого указателя.
private void createTable() {
String[] downResults = {"Downstream","2000","98"};
String[] upResults = {"Upstream","1000","78"};
String[] rowHeadings = {"","Bandwidth","QoS"};
TextView heading = (TextView) findViewById(R.id.row_header);
TextView downstream = (TextView) findViewById(R.id.downstream);
TextView upstream = (TextView) findViewById(R.id.upstream);
TableLayout newTable = (TableLayout) findViewById(R.id.resultsTable);
View table = inflater.inflate(R.layout.table_layout, null);
View row = inflater.inflate(R.layout.table_row, null);
linearResultsLayout.addView(table);
for(int i = 0; i < rowHeadings.length; i++){
heading.setText(rowHeadings[i].toString());
downstream.setText(downResults[i].toString());
upstream.setText(upResults[i].toString());
newTable.addView(row);
}
}
Я предполагаю, что это будет сложнее, чем то, как я пытаюсь его выполнить.
Я попытался это и получил ошибку на «столе .addView (строка) ". Метод addView (View) не определен для типа View. Я добавил актер, как это было предложено, но это приводит к нулевому указателю при запуске –
двух вещей - во-первых, вы изменили порядок? сначала нужно раздуть макет. Во-вторых, вам может потребоваться передать родительский вид, но это обычно вызывает другую проблему. – Jim
Привет @ Jim, да, я изменил порядок. Я скопировал и вставил из вашего примера. –