所以我想在我的Java应用程序中为TableLayout增加更多行。

这是我当前正在运行的代码:

        LayoutInflater inflater = getLayoutInflater();
        View layout = inflater.inflate(R.layout.toast_layout, (ViewGroup) findViewById(R.id.toast_layout_root));

        //The part that fails
        TableLayout table = (TableLayout) findViewById(R.id.toastTable);
        View row = getLayoutInflater().inflate(R.layout.toast_table_layout_row, (ViewGroup) findViewById(R.id.toast_row));
        table.addView(row);

        Toast toast = new Toast(getApplicationContext());
        toast.setGravity(Gravity.CENTER_VERTICAL, 0 ,0);
        toast.setDuration(Toast.LENGTH_LONG);
        toast.setView(layout);
        toast.show();


这是我的xml文件:

toast_layout:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:id="@+id/toast_layout_root"
              android:orientation="horizontal"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:padding="8dp"
              android:background="#c3484848">

    <TableLayout
        android:id="@+id/toastTable"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">

        <TableRow
            android:layout_height="wrap_content"
            android:layout_width="wrap_content" >

            <TextView
                android:tag="toast_name"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight=".50"
                android:text="Kultuur"
                android:textAllCaps="true"/>

            <TextView
                android:tag="toast_params"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight=".50"
                android:text="1000 tera mass g"
                android:textAllCaps="true"/>
        </TableRow>

    </TableLayout>
</RelativeLayout>


toast_table_layout:

<?xml version="1.0" encoding="utf-8"?>
<TableRow xmlns:android="http://schemas.android.com/apk/res/android"
    android:tag="toast_row"
    android:id="@+id/toast_row"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content" >

    <TextView
        android:tag="toast_name"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight=".50"
        android:text="Kultuur"
        android:textAllCaps="true"/>

    <TextView
        android:tag="toast_params"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight=".50"
        android:text="1000 tera mass g"
        android:textAllCaps="true"/>
</TableRow>


我的想法是我想在现有的TableLayout中添加更多行
如果删除用//The part that fails注释的代码,则会得到一个烤面包,其中显示一个TableLayout并带有少量文本。

但是添加更多行将失败,并显示NullPointException。
我不确定应该如何正确执行。最终结果应该是我将这些行添加到循环中,并通过它们具有的标记获取TextField来将其TextField文本更改为其他内容。

最佳答案

您已从膨胀视图调用findViewById(),因为您的toastTable位于toast_layout_root中。只是改变

TableLayout table = (TableLayout) findViewById(R.id.toastTable);




TableLayout table = (TableLayout)layout.findViewById(R.id.toastTable);

关于java - 从部分XML向TableLayout添加更多行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29376598/

10-11 21:41