我想在动态添加的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" />
答案 0 :(得分:0)
这里要理解的是,您可以在任何ViewGroup
中查找子视图(LinearLayout
是ViewGroup
)。
您可能熟悉在活动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()
}
});