尝试获取 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.getChildAt(1);
尽管这可以通过设计库
提供的 TextInputLayout 来实现
我正在开发一个应用程序,它的表单很长,因此很难为每个屏幕手动执行 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.getChildAt(1);
尽管这可以通过设计库
提供的 TextInputLayout 来实现