尝试获取 table 行下的子视图的 ID

Trying to get ids of child views under a table row

我正在开发一个应用程序,它的表单很长,因此很难为每个屏幕手动执行 findViewById。 我卡住的屏幕中有以下结构。

Relative layout
->TableLayout
-->TableRow
--->And then each table row has 3 edittext in its own columns. 

我正在做这个

           TableLayout table = (TableLayout)findViewById(R.id.screen8_table1);
           int rowCount = table.getChildCount();

           TableRow rows = (TableRow)table.getChildAt(0);
           int viewCount = rows.getChildCount();
           EditText thisView = new EditText(getApplicationContext());
           View theView = rows.getChildAt(1);
           int Id = theView.getId();
           thisView.findViewById(Id);
           text = thisView.getText().toString();
           Log.i("View value",text);

当我尝试获取 ID 时显示 -1。 请帮忙。

在 Pavneet Singh 的回答后,我对代码进行了这一更改

        FloatLabeledEditText et_one = (FloatLabeledEditText)rows.getChildAt(1);
        text = et_one.getEditText().getText().toString();

现在可以正常工作了。在这里节省我大量的代码行!

您正在创建一个新的 EditText,它不是 TableRow 的子项。

EditText thisView = new EditText(getApplicationContext());
View theView = rows.getChildAt(1);
int Id = theView.getId();

可以直接取为

EditText eText_one = (EditText)rows.getChildAt(1);
// no need to use any id to fetch edittext reference
text = eText_one.getText().toString();

更新:您正在使用 customize editext 所以请使用

 com.wrapp.floatlabelededittext.FloatLabeledEditText et_one =
                  (com.wrapp.floatlabelededittext.FloatLabeledEditText)rows.ge‌​tChildAt(1);

尽管这可以通过设计库

提供的 TextInputLayout 来实现