所以我想在我的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/