访问动态创建的EditTexts的值

时间:2012-01-06 17:17:37

标签: android xamarin.android

根据输入到edittext中的值,我在sqlite表上执行select,并且需要将该查询的结果显示为

Textview EditText按钮

单击该按钮时,我需要直接访问EditText的文本值。

TableLayout tl = (TableLayout)FindViewById(Resource.Id.tl);
var connection = inst.conn();
connection.Open();
var c = connection.CreateCommand();
c.CommandText = "Select * From OnOrder Where ItemNumber = '" + contents + "'";
SqliteDataReader dr = c.ExecuteReader();

                if (dr.HasRows)
                {
                    TextView tv;
                    EditText et;
                    Button bt;
                    TableRow tr;
                    var tlp = new TableRow.LayoutParams(2);
                    var tlp2 = new TableRow.LayoutParams(3);

                    while (dr.Read())
                    {
                        tr = new TableRow(this);

                        partdesc.Text = dr[2].ToString();
                        tv = new TextView(this);
                        tv.Text = dr[0].ToString() + "   " + dr[3].ToString() + "   ";
                        tr.AddView(tv);

                        et = new EditText(this);
                        et.Hint = "Quantity";
                        et.LayoutParameters = tlp;
                        tr.AddView(et);

                        bt = new Button(this);
                        bt.LayoutParameters = tlp2;
                        bt.Text = "Receive";
                        bt.Click += delegate
                        {
                          //Don't know what to do here to make it so that when this button is clicked it acts on the values of the edittext just created to its left
                        };
                        tr.AddView(bt);

                        tl.AddView(tr);
                    }
                }

                dr.Close();
                connection.Close();

            }

编辑:有效的代码

TableLayout tl = (TableLayout)FindViewById(Resource.Id.tl);
var connection = inst.conn();
connection.Open();
var c = connection.CreateCommand();
c.CommandText = "Select * From OnOrder Where ItemNumber = '" + contents + "'";
SqliteDataReader dr = c.ExecuteReader();

                if (dr.HasRows)
                {
                    TextView tv;
                    EditText et;
                    Button bt;
                    TableRow tr;
                    var tlp = new TableRow.LayoutParams(2);
                    var tlp2 = new TableRow.LayoutParams(3);
                    var cnt = 0;

                    while (dr.Read())
                    {
                        tr = new TableRow(this);
                        var record = cnt.ToString();
                        partdesc.Text = dr[2].ToString();
                        tv = new TextView(this);
                        tv.Text = dr[0].ToString() + "   " + dr[3].ToString() + "   ";
                        tr.AddView(tv);

                        et = new EditText(this);
                        et.Hint = "Quantity";
                        et.InputType = (int)Android.Text.InputTypes.ClassNumber;
                        et.LayoutParameters = tlp;
                        tr.AddView(et);

                        bt = new Button(this);
                        bt.LayoutParameters = tlp2;
                        bt.Text = "Receive";
                        bt.Click += delegate
                        {
                            getValue(Convert.ToInt32(record));

                        };
                        tr.AddView(bt);

                        tl.AddView(tr);
                        cnt++;
                    }
                }

                dr.Close();
                connection.Close();

            }
        }
    }

    public void getValue(int index)
    {
        TableLayout tl = (TableLayout)FindViewById(Resource.Id.tl);
        TableRow tr = (TableRow)tl.GetChildAt(index);
        EditText et = (EditText)tr.GetChildAt(1);
        var inst = new Inventory.invChange();
        Dialog d = inst.showBuilder(this, "Test", et.Text);
        d.Show();
    }

3 个答案:

答案 0 :(得分:1)

Console.WriteLine (et.Text);

答案 1 :(得分:0)

添加了我开始工作的代码。使用委托以建议的方式返回空值。

答案 2 :(得分:0)

您始终可以将tag的{​​{1}}设置为相关内容。

例如,您可以为它们编号。如果你点击#4,得到左边/右边的那个,无论如何,做4-1 = 3,然后检索带有tag = 3的EditText