我刚开始学习Android应用程序开发以及java,我有点困惑如何让它工作。我使用以下tablelayout在UI中创建了用户输入字段:
public void inputRow( TableLayout tl, String label, int inputSize, int inputID )
{
TableRow inputRow = new TableRow(this);
TextView tv = new TextView(this);
EditText edit = new EditText(this);
// some margin
inputRow.setPadding( 20,10,20,0);
tv.setText(label);
edit.setMaxWidth( inputSize*7) ;
edit.setMinimumWidth(inputSize*7);
edit.setId( inputID );
edit.setGravity(Gravity.RIGHT);
inputRow.addView(tv);
inputRow.addView(edit);
tl.addView(inputRow);
}
然后我用以下内容填写了inputRows:
inputRow( myTableLayout, "Name", 30, 10000);
inputRow( myTableLayout, "Last Name", 20, 10001);
inputRow( myTableLayout, "Age", 3, 10002);
inputRow( myTableLayout, "Street Address", 20, 10003);
inputRow( myTableLayout, "State", 15, 10004);
创建了按钮
Button btAccept = new Button(this);
btAccept.setText( "Save");
btAccept.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
alertDialog.show();
}
});
警报对话:
final AlertDialog alertDialog;
alertDialog = new AlertDialog.Builder(this).create();
alertDialog.setTitle("Save");
alertDialog.setMessage("Saved..");
而不仅仅是显示"已保存..."在警报对话框中,如何让用户在点击按钮后显示用户提交的实际信息?虽然我为每个输入行设置了id,但我不确定如何实际检索它们。对我来说,最重要的是还要将所有输入放在一个aray中然后显示吗?
修改 我一直在网上搜索可能的解决方案,想想我可能需要从myTableLayout查看每个TableRow。
TableRow row1 = (TableRow)myTableLayout.getChildAt(0);
TextView tv1 = (TextView) row1.getChildAt(0);
String input = tv1.getText().toString();
我想也许我可以从我的表中访问第一行来检索textview输出。但它仍然无法奏效。我真的以为我可以使用每个editText设置的id来访问每一行,但我尝试的任何工作都没有。
答案 0 :(得分:1)
在类中创建EditText的ArrayList,并在创建行时将editText对象放入其中。
List<EditText> editTextList = new ArrayList<>();
在inputRow(.....)方法中
//your code
EditText edit = new EditText(this);
editTextList.add(edit);
获取arrayList中每个输入的Text并在警告对话框中显示它:
String message = "Saved: ";
for(EditText edit:editTextList) {
message+=edit..getText().toString()+" ";
}
alertDialog.setMessage(message);
答案 1 :(得分:0)
您是否尝试过使用
更改已保存..alertDialog.setMessage("Name, 30, 10000");
或您需要显示它们的任何其他方式?