我正在开发一个具有长格式的应用程序,因此很难为每个屏幕手动执行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();
现在它正常工作。在这里为我节省了大量的代码!
答案 0 :(得分:3)
您正在创建一个新的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来实现