如何在动态添加的EditTexts中添加文本

时间:2016-05-25 18:11:30

标签: android android-layout layout-inflater

我想在动态添加的EditTexts中添加文本。 至于现在它只是添加一个带有两个EditText的布局,它会在按钮点击时添加到LinearLayout。

如何设置这些Editexts的文本?因为现在我可以添加任意多个,并且每个EditText都具有与布局文件中的相同ID。

我的mainactivity.java按钮上的通货膨胀点击如下:

final LinearLayout mView = (LinearLayout) getLayoutInflater().inflate(R.layout.more_rest_main, null);
mView.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
restLayout.addView(mView); 

这是我对more_rest_main.xml的布局

 <EditText
    android:layout_width="150dp"
    android:layout_height="wrap_content"
    android:id="@+id/added_rest_from"
    android:layout_alignParentTop="true"
    android:layout_alignParentStart="true"
    android:hint="@string/time_from"
    android:textSize="15dp"
    android:focusable="false"/>

 <EditText
    android:layout_width="150dp"
    android:layout_height="wrap_content"
    android:id="@+id/added_rest_to"
    android:layout_alignParentTop="true"
    android:layout_alignParentEnd="true"
    android:hint="@string/time_to"
    android:textSize="15dp"
    android:focusable="false" />

2 个答案:

答案 0 :(得分:0)

这里要理解的是,您可以在任何ViewGroup中查找子视图(LinearLayoutViewGroup)。

您可能熟悉在活动View中检索onCreate,在调用setContentView后,您可以访问View findViewById }}

因此,在对ViewGroup进行充气后,您可以使用与在活动onCreate中使用的方法相同的方法,但是您需要查找ViewGroup的子视图:

final LinearLayout mView = (LinearLayout) getLayoutInflater().inflate(R.layout.more_rest_main, null);

EditText txtAddedRestFrom = (EditText)mView.findViewById(R.id.added_rest_from);

restLayout.addView(mView); 

获得引用后,您可以在EditText上调用任何方法,例如setText

答案 1 :(得分:0)

您可以动态创建EditText,如下所示:

EditText editText = new EditText(myContext);
editText.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
//add the same logic as in the XML file
mView.addView(editText);

您还可以动态设置ID。如果您使用的是API 17及更高版本,请执行以下操作:

editText.setId(View.generateViewId())

否则,您可以将您选择的正整数设置为ID,而不是使用:

View.generateViewId() 

使用上面的代码,由于这些代码将动态添加,因此您不需要XML文件,因为EditTexts将动态创建。 如果要保留现有的XML文件,只需调用

即可
setTag() 

到每个膨胀的EditTexts并在setTag方法中设置一个唯一值。这样你就可以区分EditTexts。因为你可以这样做,你可以添加你需要的任何文本。

要回复您的评论,请参阅如何设置OnCLickListener:

editText.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
       // here you can get either the Tag or the ID that
       // you've set dynamically. And do whatever you like to do
       view.getTag()
       view.getId()
    }
});