从android中动态创建的edittext获取价值?
Posted
技术标签:
【中文标题】从android中动态创建的edittext获取价值?【英文标题】:Get value from edittext created dynamically in android? 【发布时间】:2021-01-18 04:48:00 【问题描述】:我已经使用从服务器接收到的 JSON 创建了 UI,
我能够根据收到的数据成功创建输入。 (我必须根据数据创建输入字段)
如何在按钮单击时为每个 editText 调用 getText()?
任何帮助都会很有用。
代码: (在主要活动中)
<ListView
android:padding="@dimen/_8sdp"
android:id="@+id/lv"
android:layout_
android:layout_
android:gravity="center" />
<Button
android:layout_alignParentBottom="true"
android:id="@+id/addnew"
android:textColor="#000000"
android:text="Save"
android:onClick="saveData"
android:layout_
android:layout_/>
代码(在适配器中)
<RelativeLayout
android:id="@+id/r1"
android:layout_
android:layout_>
<EditText
android:layout_margin="@dimen/_8sdp"
android:paddingStart="@dimen/_16sdp"
android:paddingEnd="@dimen/_16sdp"
android:id="@+id/editText"
android:importantForAutofill="no"
android:maxLength="35"
android:textColorHint="#66000000"
android:textColor="#66000000"
android:background="@drawable/rounded_edittext"
android:layout_
android:layout_/>
</RelativeLayout>
以上字段是使用Adapter动态生成的, 我需要在单击按钮时获取输入的值。
注意: 按钮在主页上,输入字段来自适配器和 JSON 循环
希望你能理解我的担忧。 感谢您的帮助。
【问题讨论】:
请提供您在课堂上使用的代码,以便更容易为您提供帮助 已添加,请查看@BogdanAndroid 嗨,我只看到一些 XML,没有看到您的代码。 【参考方案1】:我想你想在所有输入字段序列中获取文本,如果是这样,在你的 json 中你需要为每个输入字段添加 id,每个输入字段都有一个唯一的 id 例如,使用上面的屏幕截图,我想 json 将是
[
"input_field_1":
"id": "ipf_1",
"hint": "Title",
"other_data": "..."
,
"input_field_2":
"id": "ipf_2",
"hint": "URL",
"other_data": "..."
,
"input_field_3":
"id": "ipf_3",
"hint": "Username",
"other_data": "..."
,
" input_field_4 ":
" id ": " ipf_4 ",
" hint ": " Password ",
" other_data ": "..."
]
所以代码应该像(kotlin):
val listValue = ArrayList<String>()
val jsonArray = your_json_array
for (i in 1..jsonArray.length())
listValue.add(findViewById(getResources().getIdentifier(jsonArray[i].id, "id", context.getPackageName()))?.text?.toString())
yourButton.setOnClickListener
//get value as your requirement
for (value in listValue)
Log.d("TAG", "value is $value")
Java 代码:
void parseJson()
String json = "[\n" +
"\"input_field_1\": \n" +
" \"id\": \"ipf_1\",\n" +
" \"hint\": \"Title\",\n" +
" \"other_data\": \"...\"\n" +
",\n" +
"\"input_field_2\": \n" +
" \"id\": \"ipf_2\",\n" +
" \"hint\": \"URL\",\n" +
" \"other_data\": \"...\"\n" +
",\n" +
"\"input_field_3\": \n" +
" \"id\": \"ipf_3\",\n" +
" \"hint\": \"Username\",\n" +
" \"other_data\": \"...\"\n" +
",\n" +
"\" input_field_4 \": \n" +
" \" id \": \" ipf_4 \",\n" +
" \" hint \": \" Password \",\n" +
" \" other_data \": \"...\"\n" +
"]";
final ArrayList<String> listValue = new ArrayList<>();
try
JSONArray jsonArray = new JSONArray(json);
for (int i = 0; i < jsonArray.length(); i++)
JSONObject jsonObject = jsonArray.getJSONObject(i);
String idName = jsonObject.getString("id");
int id = getResources().getIdentifier(idName, "id", getPackageName());
listValue.add(((EditText) findViewById(id)).getText().toString());
findViewById(R.id.yourButtonId).setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
for (int i = 0; i < listValue.size(); i++)
Log.d("TAG", "value is: " + listValue.get(i));
);
catch (Exception e)
Log.e("TAG", "error is: " + e.getMessage());
【讨论】:
兄弟,有JAVA方面的帮助吗? 好的,我用包含 @Test 的 Java 代码编辑了我的答案以上是关于从android中动态创建的edittext获取价值?的主要内容,如果未能解决你的问题,请参考以下文章
Android - 通过 ID 从动态 EditTexts 获取数据
Android用代码动态创建TextView,EditText,ImageView工具类
Android控件ListView获取item中EditText值