【发布时间】:2014-09-29 20:42:25
【问题描述】:
我正在尝试在 TableLayout 中显示传递到 JSONObjects 的 JSONArray 的数据。问题是我知道所有 JSONObjects 都是正确的(将 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 代码在该行之后的第一部分动态生成,因为它们是实际的数据行。
谢谢!
【问题讨论】:
-
为什么不为此使用 ListView 和自定义 ListViewAdapter?
-
你能发布示例 json 吗?
标签: java android xml json tablelayout