【问题标题】:Creation of EditText Dynamically and get their text from each of EditText动态创建 EditText 并从每个 EditText 获取它们的文本
【发布时间】:2012-04-28 07:46:50
【问题描述】:

我已经动态创建了 EditText 视图,现在我想将它们的文本放入一个列表或数组中,我该怎么做?

【问题讨论】:

标签: android


【解决方案1】:

当您像这样动态地创建编辑文本时,您必须获取它们的参考..

    EditText ed;
    List<EditText> allEds = new ArrayList<EditText>();

 for (int i = 0; i < count; i++) {   
   //count is number of edittext fields
ed = new EditText(MyActivity.this);
allEds.add(ed);

linear.addView(ed);
}

现在 allEds 将拥有对您的编辑文本的引用..您可以像这样获取文本..

 String [] items=new String[allEds.size()]
 for(int i=0; i < allEds.size(); i++){
 items[i]=allEds.get(i).getText().toString();
 }

【讨论】:

    【解决方案2】:

    您可以创建两个List,一个用于存储动态创建的EditText,另一个用于存储其文本。

    然后使用for-each 循环遍历EditText 列表并获取每个EditText 的文本并将其添加到文本列表中。

    List<EditText> myList = new ArrayList<EditText>();
    List<String> etText = new ArrayList<String>();
    EditText myEt1 = new EditText(this);
    EditText myEt2 = new EditText(this);
    EditText myEt3 = new EditText(this);
    //so on...
    
    myList.add(myEt1);
    myList.add(myEt2);
    myList.add(myEt3);
    
    for(EditText et : myList){
    String settext = et.getText().toString();
    etText.add(settext);
    }
    

    【讨论】:

      【解决方案3】:

      如果您的问题在于这些视图的可访问性:

      // assume ll is your container LinearLayout and your EditTexts inserted in it
      LinearLayout ll;
      int nViews = ll.getChildCount();
      
      for (int i = 0; i < nViews; i++) {
          View child = ll.getChildAt(i);
          if (child instanceof EditText ) {
              EditText edt= (EditText) child;
              //...
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2018-02-16
        • 2017-10-14
        • 2011-08-20
        • 1970-01-01
        • 2021-01-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-26
        相关资源
        最近更新 更多