在第三列之后动态添加下一行

时间:2018-11-09 21:58:02

标签: android

这是所需的表格布局:

+++++++++++++
+   +   +   +
+ 1 + 2 + 3 +
+   +   +   +
+++++++++++++
+   +   +   +
+ 4 + 5 + 6 +
+   +   +   +
+++++++++++++
+   +   +   +
+ 7 + 8 + - +
+   +   +   +
+++++++++++++

我的表是根据json数据动态创建的:

TableLayout tl = (TableLayout) findViewById(R.id.table);
JSONArray jsonArray = new JSONArray( all_gpio_json );

    for ( i = 0; i < jsonArray.length(); i++) {

    ...some dynamic table generation code like this:
    TableRow row = new TableRow(this);
    Switch sw = new Switch( this );
    row.addView(sw);

}
tl.addView( row );

生成表没有问题,因此,每个json值都由唯一的行表示,但是我想拥有每行最多3列的布局,并且行数会随着时间的增长而动态增长因为循环中有json数据。

我尝试在现有行已填充3个项目之后添加新行:

if (i % 3 == 1) {TableRow new_row = new TableRow( this );}

但是在应该添加new_row时出现错误:

  E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.comain.tests, PID: 15519
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.comainxxx.tests/com.comainxxx.tests.MainActivity}: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.

任何人都会有一个想法,如何实现这一点以动态添加新行?

编辑:通过实现网格视图解决了,这更适合此任务。

2 个答案:

答案 0 :(得分:0)

在Java中是可能的。您需要在if条件之外声明该变量。尝试以下代码

/Wall

答案 1 :(得分:0)

编辑:通过实现网格视图解决了,这更适合此任务。