【问题标题】:JSONObject data to dynamic TableLayout by TableRowsJSONObject 数据通过 TableRows 到动态 TableLayout
【发布时间】: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


【解决方案1】:

什么是“在”。它在哪里声明?

使用列表视图!这比这容易得多!完全没有循环!

另外,我建议将GSON 用于您的 JSON。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多