gpt4 book ai didi

java - 在第二个 Activity 中分别收集和显示动态 editTexts 的值

转载 作者:行者123 更新时间:2023-12-01 22:10:47 24 4
gpt4 key购买 nike

我创建了三个编辑文本输入和另一组输入,当您单击“添加更多”按钮时应动态添加这些输入。

我想收集从第二个 Activity 提交的数据,并根据单击“添加更多”按钮的次数将它们分开

我的问题是,当我单击“提交”按钮时,我可以获取第二个 Activity 中静态编辑文本字段的初始值,但无法获取动态编辑文本的值。

我将不胜感激所提供的任何帮助谢谢

XML 布局

<ScrollView
android:layout_width="match_parent"
android:layout_height="480dp"
android:paddingBottom="50dp">

<LinearLayout
android:layout_width="match_parent"
android:layout_height="422dp"
android:layout_margin="5dp"
android:orientation="vertical">

<LinearLayout
android:id="@+id/parent_linear_layout"
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/title_main"
android:layout_width="match_parent"
android:layout_height="46dp"
android:layout_marginStart="16dp"
android:layout_marginLeft="16dp"
android:layout_marginTop="52dp"
android:layout_marginEnd="16dp"
android:layout_marginRight="16dp"
android:ems="10"
android:hint="Enter product Title"
android:inputType="text"
android:paddingStart="20dp"
android:paddingLeft="20dp"
android:paddingTop="10dp"
android:paddingEnd="10dp"
android:paddingRight="10dp"
android:paddingBottom="10dp"
android:textSize="14sp" />

<EditText
android:id="@+id/product_name_main"
android:layout_width="match_parent"
android:layout_height="55dp"
android:layout_marginStart="16dp"
android:layout_marginLeft="16dp"
android:layout_marginTop="24dp"
android:layout_marginEnd="16dp"
android:layout_marginRight="16dp"
android:ems="10"
android:hint="Product Name"
android:inputType="text"
android:paddingStart="20dp"
android:paddingLeft="20dp"
android:paddingTop="10dp"
android:paddingEnd="10dp"
android:paddingRight="10dp"
android:paddingBottom="10dp"
android:textSize="14sp" />

<EditText
android:id="@+id/product_number_main"
android:layout_width="match_parent"
android:layout_height="55dp"
android:layout_marginStart="16dp"
android:layout_marginLeft="16dp"
android:layout_marginTop="24dp"
android:layout_marginEnd="16dp"
android:layout_marginRight="16dp"
android:ems="10"
android:hint="Product Number"
android:inputType="number"
android:paddingStart="20dp"
android:paddingLeft="20dp"
android:paddingTop="10dp"
android:paddingEnd="10dp"
android:paddingRight="10dp"
android:paddingBottom="10dp"
android:textSize="14sp" />


<Button
android:id="@+id/add_field_button"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_marginBottom="5dp"
android:background="#555"
android:onClick="onAddField"
android:paddingLeft="5dp"
android:text="Add Field"
android:textColor="#FFF" />
</LinearLayout>


</LinearLayout>

</ScrollView>

<Button
android:id="@+id/add_field_button"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_marginBottom="5dp"
android:background="#555"
android:onClick="onAddField"
android:paddingLeft="5dp"
android:text="Add Field"
android:textColor="#FFF" />
</LinearLayout>

动态布局

android:layout_height="50dp"
android:id="@+id/dynamic_layout"
android:orientation="vertical" >

<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="New Field"
android:layout_marginTop="32dp"
android:textAlignment="center"
android:textStyle="bold"
android:textSize="26dp"/>

<EditText
android:layout_width="match_parent"
android:layout_height="46dp"
android:layout_marginStart="16dp"
android:layout_marginLeft="16dp"
android:layout_marginTop="22dp"
android:layout_marginEnd="16dp"
android:layout_marginRight="16dp"

android:ems="10"
android:hint="Enter product Title"
android:inputType="text"
android:paddingStart="20dp"
android:paddingLeft="20dp"
android:paddingTop="10dp"
android:paddingEnd="10dp"
android:paddingRight="10dp"
android:paddingBottom="10dp"
android:textSize="14sp"
/>

<EditText
android:layout_width="match_parent"
android:layout_height="55dp"
android:layout_marginStart="16dp"
android:layout_marginLeft="16dp"
android:layout_marginTop="24dp"
android:layout_marginEnd="16dp"
android:layout_marginRight="16dp"

android:ems="10"
android:hint="Product Name"
android:inputType="text"
android:paddingStart="20dp"
android:paddingLeft="20dp"
android:paddingTop="10dp"
android:paddingEnd="10dp"
android:paddingRight="10dp"
android:paddingBottom="10dp"
android:textSize="14sp"
/>

<EditText
android:layout_width="match_parent"
android:layout_height="55dp"
android:layout_marginStart="16dp"
android:layout_marginLeft="16dp"
android:layout_marginTop="24dp"
android:layout_marginEnd="16dp"
android:layout_marginRight="16dp"

android:ems="10"
android:hint="Product Number"
android:inputType="number"
android:paddingStart="20dp"
android:paddingLeft="20dp"
android:paddingTop="10dp"
android:paddingEnd="10dp"
android:paddingRight="10dp"
android:paddingBottom="10dp"
android:textSize="14sp"
/>


<Button
android:id="@+id/delete_button"
android:layout_width="36dp"
android:layout_height="31dp"
android:layout_marginStart="10dp"
android:layout_marginLeft="10dp"
android:background="@android:drawable/ic_delete"
android:onClick="onDelete" />

Activity.java添加更多按钮

public void onAddField(View v) {
dynamicEditTexts = new ArrayList<EditText>();//added this

LayoutInflater inflater = (LayoutInflater)
getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final View rowView = inflater.inflate(R.layout.field, null);
// Add the new row before the add field button.
parentLinearLayout.addView(rowView, parentLinearLayout.getChildCount()
- 1);

EditText dynamicText = new EditText(this);//added this
// EditText dynamicText = rowView.findViewById(R.id.dynamic_layout);
dynamicEditTexts.add(dynamicText);

}

提交按钮

public void getValue(View view) {
Intent intent = new Intent(MainActivity.this, Output.class);
titleM = findViewById(R.id.title_main);
productNameM = findViewById(R.id.product_name_main);
productNumberM = findViewById(R.id.product_number_main);

//getting the texts
String Title = titleM.getText().toString();
String PName = productNameM.getText().toString();
double PNumber =
Double.parseDouble(productNumberM.getText().toString());

// ******** FOR THE DYNAMIC EDITEXT FIELDS ************
String[] inputItems = new String[dynamicEditTexts.size()];
String string = String.valueOf(dynamicEditTexts.size());
for(int j = 0; j <dynamicEditTexts.size(); j++){
inputItems[j] = dynamicEditTexts.get(j).getText().toString();
intent.putExtra("dynamicData", inputItems[j]);
}

intent.putExtra("title", Title);
intent.putExtra("pname", PName);
intent.putExtra("pnumber", PNumber);
startActivity(intent);
finish();
}

输出类

//GETTING ITEMS FROM THE MAIN ACTIVITY
//for the static texts
String StaticProductTitle =
getIntent().getExtras().getString("title");
String StaticProductName = getIntent().getExtras().getString("pname");
double StaticProductNumber =
getIntent().getExtras().getDouble("pnumber");

//getting for the dynamic results
Intent collectDynamicData = getIntent();

ArrayList<String>alldynamicTexts = (ArrayList<String>)
collectDynamicData.getSerializableExtra("dynamicData");




//FORMATING THE NUMBERS TO DISPLAY IN A NUMBER PATTERN
DecimalFormat formate = new DecimalFormat();//"#,###,###"
String FormateStaticNumber;
String FormateDynamicNumber;
FormateStaticNumber = formate.format(StaticProductNumber);
FormateDynamicNumber = formate.format(alldynamicTexts);

//Setting the Results to the Static OutPut
StaticTitle.setText(StaticProductTitle);
StaticPName.setText(StaticProductName);
StaticPNumber.setText(FormateStaticNumber);

//Setting the Result of The Dynamic Outputs
DynamicPTitle.setText(FormateDynamicNumber);
//DynamicPTitle.setText((CharSequence) alldynamicTexts);
//DynamicPTitle.setText(array);
//DynamicPName.setText(DynamicProductName);
//DynamicPNumber.setText(FormateDynamicNumber);

}

输出更新

Intent collectDynamicData = getIntent();
String[] dynamicItems = collectDynamicData.getStringArrayExtra("dynamicData");
ArrayList<String> alldynamicTexts = new ArrayList<>(Arrays.asList(dynamicItems));
String newText = (String.valueOf(alldynamicTexts));
DynamicPTitle.setText(newText);

最佳答案

getValue 方法中收集动态 edittext 字段值时,您将覆盖之前在 Intent extra 中输入的值。

您需要做的是收集列表、数组或类似数据结构中的所有字符串,并将它们放入 extras 中。因此,要实现这一目标,您应该重写您的 for 逻辑,如下所示:

for (int j = 0; j <dynamicEditTexts.size(); j++) {
inputItems[j] = dynamicEditTexts.get(j).getText().toString();
}
intent.putExtra("dynamicData", inputItems);

由于您将数据作为字符串数组注入(inject),因此您还必须将其作为字符串数组读回,因此您的 Output.java 将如下所示:

String[] dynamicItems = collectDynamicData.getStringArrayExtra("dynamicData");

并将其转换为字符串列表:

ArrayList<String> alldynamicTexts = new ArrayList<>(Arrays.asList(dynamicItems));

当然,您可以首先将它们作为字符串数组列表注入(inject),然后使用collectDynamicData.getStringArrayListExtra("dynamicData")读取它们,选择适合您的任何方法。

希望有帮助。

关于java - 在第二个 Activity 中分别收集和显示动态 editTexts 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58661364/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com