【问题标题】:how to get values from dynamically created edittexts如何从动态创建的编辑文本中获取值
【发布时间】:2014-06-17 19:23:33
【问题描述】:

我创建了一个表格布局,其中包含动态创建的行,每行有 3 个编辑文本。假设有 5 行,每行有 3 个编辑文本,我怎样才能从每行的每个第一个编辑文本中获取输入的值到数组中并计算它们。

到目前为止,这是我的代码:

Public void addRow (View v) {
TableRow row = new TableRow(this);
EditText et1 = new EditText(this);
EditText et2 = new EditText(this);
EditText et3 = new EditText(this);

idCount++;
mRowCount++;

et1.setTag(a + idCount);
et1.setText(a + idCount);
et2.setTag(b + idCount);
et2.setText(b + idCount);
et3.setTag(c + idCount);
et3.setText(c + idCount);

mLayout.addView(row);
row.setId(mRowCount);
row.addView(et1);
row.addView(et2);
row.addView(et3);

提前感谢

【问题讨论】:

    标签: java android arrays arraylist


    【解决方案1】:
    ArrayList<String> stringList = new ArrayList<String>(); //Generic ArrayList to Store your Strings
    
    stringList.add(et1.getText()) ;//do this for your 3 textviews  
    stringList.add(et2.getText()) ;
    stringList.add(et3.getText()) ;
    int count=0;
    Iterator<String> iterator = stringList.iterator();
        while (iterator.hasNext()) {
            count=count+Integer.parseInt(iterator.next());
        }
    

    【讨论】:

    • 我要插入 int 值,我应该使用 arraylist 还是 arraylist 然后尝试从 edittext arraylist 获取值?
    • 我更新了我的答案。您可以执行arraylist,然后将插入的值转换为整数:Integer.parseInt(iterator.next()),或者您可以解析它并使用ArrayList。使用我提供的代码,它会起作用。为你所需要的。欢呼
    【解决方案2】:

    1) 如果您有参考,可以通过getText() 访问。

    2) 如果您没有参考,您必须为每个 EditText 设置一个 ID,然后您可以通过 findViewById() 联系到他们

    【讨论】:

      【解决方案3】:

      通过 getText() 方法

          edt1.gettext();
      

      如果要输入字符串数据,则使用 toString() 方法

         String res=edt1.getText().toString();
      

      【讨论】:

        【解决方案4】:

        根据您最终可能创建的行数,我会在您创建 EditText 对象时存储对它们的引用。这可能意味着定义一个行对象来保存三个 EditText 对象,但就像创建一个 Map 一样东:

        Map&lt;String, List&lt;EditText&gt;&gt; mRows = new HashMap&lt;String, List&lt;&lt;EditText&gt;&gt;();

        创建新行时,您可以修改代码以存储引用:

        Public void addRow (View v) {
        TableRow row = new TableRow(this);
        EditText et1 = new EditText(this);
        EditText et2 = new EditText(this);
        EditText et3 = new EditText(this);
        List<EditText> row = new ArrayList<EditText>();
        row.add(et1);
        row.add(et2);
        row.add(et3);
        mRows.add("" + idCount, row);
        

        我也会将该代码移到一个单独的函数中。

        在提交时,您现在可以遍历地图并从每个条目中提取第一个条目。

        【讨论】:

          【解决方案5】:

          首先,您必须从表格布局中获取 EditText(View) 和

          TableRow tr = (TableRow) v.getParent();
          

          //表格布局的列索引,应该是整数值。

          EditText et = (EditText) tr.getChildAt(Your_Index); 
          EditText et1 = (EditText) tr.getChildAt(Your_Index);  
          EditText et2 = (EditText) tr.getChildAt(Your_Index);  
          

          然后您将使用以下代码获得该编辑文本的值

          String a = et.getText().toString(); 
          String b = et1.getText().toString();
          String c = et2.getText().toString();
          

          希望对你有所帮助。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多