我试图在TableLayout中显示传递给JSONArray的JSONArray的数据。问题是我知道所有JSONObject都是正确的(将next_object.getString("id")
的内容打印到Log.d工作中)所以它必须是我试图呈现数据的问题。
我的输出只是第一行,我在XML中静态生成,因为它只是每列的标题。
这个方法据说可以抓取TableLayout,循环遍历所有JSONObjects并一次添加一行数据。不幸的是,这个循环中断了,我不确定为什么(因为它只运行一次,但没有抛出异常)。
TableLayout table = (TableLayout) findViewById(R.id.accelerometer_table);
for (int i = 0; i < in.length(); i++) {
JSONObject nextData = in.getJSONObject(i);
TableRow row = new TableRow(this);
row.setPadding(20, 20, 20, 20);
row.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
TextView date = new TextView(this);
TextView xAxis = new TextView(this);
TextView yAxis = new TextView(this);
TextView zAxis = new TextView(this);
date.setText(nextData.getString("date"));
date.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
date.setGravity(Gravity.CENTER);
xAxis.setText(nextData.getString("x_axis"));
xAxis.setGravity(Gravity.CENTER);
yAxis.setText(nextData.getString("y_axis"));
yAxis.setGravity(Gravity.CENTER);
zAxis.setText(nextData.getString("z_axis"));
zAxis.setGravity(Gravity.CENTER);
row.addView(date);
row.addView(xAxis);
row.addView(yAxis);
row.addView(zAxis);
table.addView(row, new TableLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
}
这里是包含该表的片段的XML:
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="12dp"
android:id="@+id/accelerometer_table"
android:stretchColumns="0,1,2,3" >
<TableRow
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<TextView
android:text="@string/accelerometer_header_date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center" />
<TextView
android:text="@string/accelerometer_header_x_axis"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center" />
<TextView
android:text="@string/accelerometer_header_y_axis"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center" />
<TextView
android:text="@string/accelerometer_header_z_axis"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center" />
</TableRow>
</TableLayout>
XML仅包含静态的标题行。其余部分应该由该行之后的第一部分中的Java代码动态生成,因为它们是实际的数据行。
谢谢!