以编程方式将带有textview的tablerow添加到tablelayout(Android)

时间:2016-06-04 07:41:17

标签: android

    import android.app.Activity;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.TableLayout;
    import android.widget.TableRow;
    import android.widget.TextView;

    import java.util.ArrayList;
    import java.util.List;


    public class ShowTableResults extends Activity {

        String TAG = "tag",
                username;

        DatabaseHandler dbHandler;

        TableLayout resultsTable;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            Log.d(TAG, "SHOWTABLERESULTS oncreate");

            super.onCreate(savedInstanceState);
            setContentView(R.layout.dialog_table_results);

            username = getIntent().getExtras().getString("username");

            resultsTable = (TableLayout) findViewById(R.id.dialog_table_results);

            dbHandler = new DatabaseHandler(this);

        }

        @Override
        protected void onResume() {

            Log.d(TAG, "SHOWTABLERESULTS onresume");

            super.onResume();


            for (int j = 0; j < objectNameList.size(); j++) {

                View table_row = (TableRow) findViewById(R.id.table_row);//this is null


                TextView[] textViewArray = new TextView[9];

                TextView t1 = new TextView(this);
                TextView t2 = new TextView(this);
                TextView t3 = new TextView(this);
                TextView t4 = new TextView(this);
                TextView t5 = new TextView(this);
                TextView t6 = new TextView(this);
                TextView t7 = new TextView(this);
                TextView t8 = new TextView(this);
                TextView t9 = new TextView(this);

                t1 = (TextView) table_row.findViewById(R.id.true_matching);
                t2 = (TextView) findViewById(R.id.half_matching);
                t3 = (TextView) findViewById(R.id.false_matching);

                t4 = (TextView) findViewById(R.id.true_counting);
                t5 = (TextView) findViewById(R.id.half_counting);
                t6 = (TextView) findViewById(R.id.false_counting);

                t7 = (TextView) findViewById(R.id.true_choosing);
                t8 = (TextView) findViewById(R.id.half_choosing);
                t9 = (TextView) findViewById(R.id.false_choosing);

                textViewArray[0] = t1;
                textViewArray[1] = t2;
                textViewArray[2] = t3;
                textViewArray[3] = t4;
                textViewArray[4] = t5;
                textViewArray[5] = t6;
                textViewArray[6] = t7;
                textViewArray[7] = t8;
                textViewArray[8] = t9;


                //behavor
                for (int i = 1; i < 4; i++) {

                    //response
                    for (int k = 1; k < 4; k++) {

                        Log.d(TAG,"k, , i, j "+k+i+j);

                        textViewArray[(i-1) * 3 + k-1 ].setText(0);

//when  TableRow table_row = (TableRow) findViewById(R.id.table_row),here is null
                    }

                }
                resultsTable.addView(table_row);
                resultsTable.requestLayout();
            }

        }
    }

这是我的tablelayout:

<?xml version="1.0" encoding="utf-8"?>
<TableLayout
    android:id="@+id/dialog_table_results"
    android:layout_width="match_parent"
    android:layout_height="match_parent"

    android:weightSum="1"
    xmlns:android="http://schemas.android.com/apk/res/android">

    <TableRow
        android:id="@+id/headerrow"

        >



        <TextView
            android:text=""
            android:layout_weight="0.25"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            />
        <TextView
            android:text="@string/matching"

            android:layout_weight="0.25"
            android:layout_width="0dp"
            android:textAlignment="center"
            android:layout_height="wrap_content"/>

        <TextView
            android:text="@string/counting"
            android:layout_width="0dp"
            android:layout_height="wrap_content"  android:textAlignment="center"
            android:layout_weight="0.25"/>

        <TextView
            android:text="@string/choosing"
            android:layout_width="0dp"  android:textAlignment="center"
            android:layout_height="wrap_content"
            android:layout_weight="0.25"/>

    </TableRow>

    <TableRow
        android:id="@+id/subheaderrow"
        >



        <TextView
            android:text=""
            android:layout_weight="0.25"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            />

        <TextView
            android:text="@string/trueanswer" android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.0833"/>

        <TextView
            android:text="@string/halfanswer" android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.0833"/>

        <TextView
            android:text="@string/wronganswer" android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.0833"/>

        <TextView
            android:text="@string/trueanswer" android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.0833"/>

        <TextView
            android:text="@string/halfanswer" android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.0833"/>

        <TextView
            android:text="@string/wronganswer" android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.0833"/>

        <TextView
            android:text="@string/trueanswer" android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.0833"/>

        <TextView
            android:text="@string/halfanswer" android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.0833"/>

        <TextView
            android:text="@string/wronganswer" android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.0833"/>


    </TableRow>





</TableLayout>

这是用于添加活动的表格行,我添加了仍在布局中的tablelayout行,我认为这并不重要。

<TableRow xmlns:android="http://schemas.android.com/apk/res/android"

        android:id="@+id/table_row"
        android:layout_height="wrap_content"
        android:layout_width="match_parent">
        >

        <TextView
            android:text=""
            android:layout_weight="0.25"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:id="@+id/object_name"
            />



        <TextView
            android:text="@string/trueanswer" android:layout_width="0dp" android:id="@+id/true_choosing"
            android:layout_height="wrap_content"
            android:layout_weight="0.0833"/>

    <TextView
        android:text="@string/wronganswer" android:layout_width="0dp" android:id="@+id/half_choosing"
        android:layout_height="wrap_content"
        android:layout_weight="0.0833"/>

        <TextView

            android:text="@string/halfanswer" android:layout_width="0dp" android:id="@+id/false_choosing"
            android:layout_height="wrap_content"
            android:layout_weight="0.0833"/>



        <TextView
            android:text="@string/trueanswer" android:layout_width="0dp" android:id="@+id/true_matching"
            android:layout_height="wrap_content"
            android:layout_weight="0.0833"/>

    <TextView
        android:text="@string/wronganswer" android:layout_width="0dp" android:id="@+id/half_matching"
        android:layout_height="wrap_content"
        android:layout_weight="0.0833"/>

        <TextView
            android:text="@string/halfanswer" android:layout_width="0dp" android:id="@+id/false_matching"
            android:layout_height="wrap_content"
            android:layout_weight="0.0833"/>



        <TextView
            android:text="@string/trueanswer" android:layout_width="0dp" android:id="@+id/true_counting"
            android:layout_height="wrap_content"
            android:layout_weight="0.0833"/>

    <TextView
        android:text="@string/wronganswer" android:layout_width="0dp" android:id="@+id/half_counting"
        android:layout_height="wrap_content"
        android:layout_weight="0.0833"/>

    <TextView
            android:text="@string/halfanswer" android:layout_width="0dp" android:id="@+id/false_counting"
            android:layout_height="wrap_content"
            android:layout_weight="0.0833"/>



    </TableRow>

我有一项活动。我想要表格。为此,我有一个包含2行的表格布局和一个带有textview的tablerow布局,每个都有id。

我想通过该ID以编程方式添加文本视图,但我无法得到它。

       TableRow table_row = (TableRow) findViewById(R.id.table_row)
 t1 = (TextView) findViewById(R.id.true_matching);
     textViewArray[(i-1) * 3 + k-1 ].setText(0);

这使得

 t1 = (TextView) findViewById(R.id.true_matching); 

也是这个。我需要那个textview,我不想使用params。不可能吗?我搜索了但总是加上参数。

也行不通

table_row = getLayoutInflater().inflate(R.layout.table_row, null);

1 个答案:

答案 0 :(得分:0)

似乎您的“ dialog_table_results”和“ table_row”位于外部布局文件中, 要在您的活动中使用它们,您必须先将它们充气

resultsTable = getLayoutInflater().inflate(R.layout.dialog_table_results, null);
table_row = getLayoutInflater().inflate(R.layout.table_row, null);

对于您的TextView,必须全部初始化为这样(从table_row)

t1 = (TextView) table_row.findViewById(R.id.true_matching);

最后,您必须像这样将膨胀后的resultTable添加到活动中的现有Layout

containerLayout.addView(resultsTable);

ps:响应为时已晚,但可以帮助处于相同情况的某人。