如何从 android 中动态添加的 edittext 中获取所有文本?

How to get all text from dynamically added edittext in android?

我是 android 的新手。现在我需要知道如何获取当用户按下添加按钮时动态添加的所有编辑文本的文本值。

add.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
table = (TableLayout) findViewById(R.id.table);
row = new TableRow(Material.this);
table.setGravity(Gravity.CENTER);
 edit = new EditText(Material.this); 
 edit.setWidth(135);
 edit.setHeight(35);
 edit.setBackgroundColor(Color.WHITE); 
 row.addView(edit); 
table.addView(row); 

这里如何获取edittext的文本值?用户可以添加多个编辑文本。那么,如何获取所有文本呢?

如果 EditText 是动态添加的,请在数组中维护 EditText 的引用,并且当您需要它们的文本时迭代数组。

您需要保留对动态添加的 EditText 的引用。

并调用 getText().toString();关于那个参考。

另一种方法是使用 setId() 设置一些 ID;在需要时记录这些 ID。

((EditText)findViewById(edittextidyouset)).getText().toString();

看看这个动态设置 id 的线程:How can I assign an ID to a view programmatically?

如果您创建了编辑文本并且在编辑文本中设置了文本,那么:

String text = edittext.getText().toString();

没问题。

EditTexts 是使用引用动态创建的,使用该引用获取它的值。

例如

我创建了一个 editText

EditText myTextBox = new EditText(getBaseContext());
containerLayout.addView(myTextBox);

在这里,myTextBox 将是指代 editText 的变量,您可以使用 getText() 来获取该框的值,或者您可以使用 setText()将值设置为该框。

String value = myTextBox.getText().toString();
myTextBox.setText("this is the setted text");`

编辑

如果有多个 editText 则将所有引用添加到一个数组中并遍历它们。

List<EditText> myArray = new ArrayList();
EditText editText1 = new EditText(getBaseContext());
 containerLayout.addView(editText1);
 myArray.add(editText1);

EditText editText2 = new EditText(getBaseContext());
 containerLayout.addView(editText2);
 myArray.add(editText2);

EditText editText3 = new EditText(getBaseContext());
 containerLayout.addView(editText3);
 myArray.add(editText3);
 int i = 0;
    while (i < myArray.size()) {
        Log.i(TAG,myArray.get(i).getText());
        i++;
    }

希望对您有所帮助-

ArrayList<EditText> editTexts = new ArrayList<>();
        LinearLayout linearLayout = (LinearLayout) findViewById(R.id.container);
        for (int i = 0; i < 20; i++) {
            EditText editText = new EditText(this);
            editTexts.add(editText);
            editText.setText("I am at " + i);
            linearLayout.addView(editText);
        }
        for (EditText editText : editTexts) {
            Log.d("Texts", editText.getText().toString());
        }

您的 xml 文件可以像-

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:id="@+id/container"
    android:orientation="vertical"
    tools:context="com.hestabit.activity.Home">


</LinearLayout>