我正在创建一个应用程序,在某个片段中,我需要片段中可变数量的EditTexts。我在布局下面有一个添加按钮,按下时应该添加所需的编辑文本ID,以便我可以从中收集数据。
因此,当我一直按下+按钮时,我应该自动获得一个包含所有编辑文本的布局。 我需要一种方法来跟踪所有编辑文本的ID,以便我以后可以获取所有数据。
我该怎么做?
答案 0 :(得分:0)
实际上,只要用户按下加号按钮,您就可以采用linearlayout垂直方向并添加edittexts,以编程方式添加到布局。 你保留一些你添加它的随机数
EditText ed = new EditText(this);
ed.setId(1);
ed.setText("" + i);
ed.setInputType(2);
ed.setLayoutParams(lparams);
textFieldsLayout.addView(ed)
答案 1 :(得分:0)
将xml中的EditText布局设计为my_item.xml
文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<EditText
android:id="@+id/et1"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<EditText
android:id="@+id/et2"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<EditText
android:id="@+id/et3"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
在您的片段中添加LinearLayout
以在其中添加动态项,并添加Button
,如下所示:
<LinearLayout
android:id="@+id/ll_dynamicItems"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"></LinearLayout>
<Button
android:id="@+id/btn_add"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="+" />
现在,在java代码中,我们对my_item
布局进行了扩充,并将其添加到ll_dynamicItems
。我们还需要一个LinearLayout
列表来存储其中的夸大布局:
List<LinearLayout> myLayouts = new ArrayList<>();
btn_add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
LinearLayout ll = (LinearLayout) getLayoutInflater().from(getApplicationContext()).inflate(R.layout.my_item, ll_dynamicItems, false);
myLayouts.add(ll);
ll_dynamicItems.addView(ll);
}
});
现在首先获得第一个布局EditText值,你可以这样做:
((EditText) myLayouts.get(0).findViewById(R.id.et1)).getText()
获取第二个布局第三个EditText:
((EditText) myLayouts.get(1).findViewById(R.id.et3)).getText()
要阅读所有EditText的值,您可以使用for;)
跟踪列表