How to get data from each dynamically created EditText in Android?

后端 未结 5 1038
盖世英雄少女心
盖世英雄少女心 2020-11-27 11:29

I have successfully created EditTexts depending on the user input in Android, and also I have assigned them unique ID\'s using setId() method.

Now wha

相关标签:
5条回答
  • 2020-11-27 11:39

    You can also do like this by taking an Array of EditText. You should store all references to all EditTexts:

    EditText ed[] = new EditText[count];    
    for (int i = 0; i < count; i++) {   
    
        ed[i] = new EditText(Activity2.this);
    
        ed[i].setBackgroundResource(R.color.blackOpacity);
        ed[i].setId(id);   
        ed[i].setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
                LayoutParams.WRAP_CONTENT));
        linear.addView(ed[i]);
    }
    

    and you can use for loop to get the value from the EditText .

     for(int i = 0; i < ed.length; i++){
    
           Log.d("Value ","Val " + ed[i].getText());
      }
    
    0 讨论(0)
  • 2020-11-27 11:42

    In every iteration you are rewriting the ed variable, so when loop is finished ed only points to the last EditText instance you created.

    You should store all references to all EditTexts:

    EditText ed;
    List<EditText> allEds = new ArrayList<EditText>();
    
    for (int i = 0; i < count; i++) {   
    
        ed = new EditText(Activity2.this);
        allEds.add(ed);
        ed.setBackgroundResource(R.color.blackOpacity);
        ed.setId(id);   
        ed.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
                LayoutParams.WRAP_CONTENT));
        linear.addView(ed);
    }
    

    Now allEds list hold references to all EditTexts, so you can iterate it and get all the data.

    Update:

    As per request:

    String[] strings = new String[](allEds.size());
    
    for(int i=0; i < allEds.size(); i++){
        string[i] = allEds.get(i).getText().toString();
    }
    
    0 讨论(0)
  • 2020-11-27 11:43
                String[] strings = new String[allEds.size()];
                String[] strings1 = new String[allEdn.size()];
    
                for(int i=0; i < allEds.size(); i++){
                    strings[i] = allEds.get(i).getText().toString();
                    strings1[i] = allEdn.get(i).getText().toString();
                    System.out.println("data in edittext name is  " +strings[i]);
                    System.out.println("data in edittext number is " +strings1[i]);
                }
    

    for multiple edittext

    0 讨论(0)
  • 2020-11-27 11:45

    I have a for loop generating dynamic TextViews within TableRows from a JSON string. Here's what I did:

    // Generate Dynamic tablerows and set a unique id
    //m_jArry is a JSON Array
    
    for(int i = 0; i < m_jArry.length(); i++)
    {
        jo_inside = m_jArry.getJSONObject(i);
        TableRow row = new TableRow(getApplicationContext())
        row.setId(jo_inside.getInt("id"));
        ...        
        findViewById(row.getId())
        ...
    }
    

    I am using findViewById(row.getId()) to set the dynamic TextView text data to EditText fields in my app. For those of you who do not understand JSON, there are several good tutorials out there (I'm sure there are great explanations here on Stack Overflow) for the Android platform. I'm still an Android newbie, but I hope this is helpful to some of you out there.

    0 讨论(0)
  • 2020-11-27 12:04

    this is because EditText.gettext() return Editable , so toString will not work . try String.valueOf(edittext.gettext) .

    if u sure that u r getting d right EditText but prob. is how 2 pass its test to string den code is

        EditText t = new EditText(this);
        t.setText("test");// obviously in ur case it will be intered by user
        String s = String.valueOf(t.getText());
        System.out.println(s);
    

    else use setTeg(Edittext) n get editText by getTag on button click .

    0 讨论(0)
提交回复
热议问题