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

时间:2015-06-03 04:56:45

标签: android android-edittext

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

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。在那种情况下,如何获取所有文本?

5 个答案:

答案 0 :(得分:2)

如果动态添加EditText s,则在数组中保留EditText的引用,并且当你想要文本时,迭代数组。

答案 1 :(得分:1)

如果您已创建编辑文本,则在编辑文本中设置文本,然后:

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

没关系。

答案 2 :(得分:0)

您需要继续引用动态添加的EditText。

并调用getText()。toString();在那个参考文献上。

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

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

动态查看此线程设置ID:How can I assign an ID to a view programmatically?

答案 3 :(得分:0)

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++; } ,则在数组中添加所有引用并迭代它们。

UdpClient udpServer = new UdpClient(7005);
var receivedResults = await udpServer.ReceiveAsync();
Byte[] sendBytes = Encoding.ASCII.GetBytes("Is anybody there");
try
{
var ipAddress = Convert.ToString(receivedResults.RemoteEndPoint.Address);
var portNo = receivedResults.RemoteEndPoint.Port;
var endpoint = new IPEndPoint(IPAddress.Parse(ipAddress), portNo);
//udpServer.Connect(endpoint);
udpServer.Send(sendBytes, sendBytes.Length, endpoint);
}

enter image description here

答案 4 :(得分:0)

希望这可以帮到你 -

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>