Android 使用ImageView动态创建多个EditText,并将ImageView单击值设置为EditText,然后从EditText获取值

Android 使用ImageView动态创建多个EditText,并将ImageView单击值设置为EditText,然后从EditText获取值,android,android-layout,android-imageview,android-contacts,savestate,Android,Android Layout,Android Imageview,Android Contacts,Savestate,我想在单击按钮时动态创建EditText和ImageView ImageView从联系人列表中选择单个联系人并设置为EditText。EditText还从用户处获取值。我想获取所有EditText的数据,并将值存储在SharedReference中 帮助警报活动 当您单击submit时,您应该循环查找所有添加的EditText并从中获取价值 试试这个: String ct_one = et_one.getText().toString(); String ct_two = et_two.getT

我想在单击按钮时动态创建EditText和ImageView

ImageView从联系人列表中选择单个联系人并设置为EditText。EditText还从用户处获取值。我想获取所有EditText的数据,并将值存储在SharedReference中

帮助警报活动


当您单击submit时,您应该循环查找所有添加的EditText并从中获取价值

试试这个:

String ct_one = et_one.getText().toString();
String ct_two = et_two.getText().toString();

List<String> strings = new ArrayList<>();
int index = 3; // the first dynamic id
MyEditText editText = (MyEditText) findViewById(index);
while (editText != null) {
    strings.add(editText.getText().toString());
}

Log.d("found strings: " + ct_one + ", " + ct_two + ", and: " + Arrays.toString(strings));
要读取值,请执行以下操作:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
String ct_one = prefs.getString("value_one");
String ct_two = prefs.getString("value_two");
List<String> strings = new ArrayList<>();
int i = 0;
while (prefs.contains("value" + i)) {
    strings.add(prefs.getString("value" + i));
}

顺便说一句,如果字符串的顺序不重要,可以使用putStringSet/getStringSet代替循环代码

我有一个项目来创建食谱。当我添加一个食谱时,我可以有多种成分和多种准备状态

最大的问题是要知道有多少个,要在一个字符串中存储所有编辑文本,我只存储一个带换行符的字符串

我在此网站上找到另一个解决方案:

最简单的是,插入部分来自编辑文本的创建列表,每次创建一个文本时,都要添加一个。最好的是,我现在可以创建两个列表,一个是成分列表,一个是州列表

在活动开始时:

private ArrayList<EditText> ListEditText = new ArrayList<>();
当您想要获取信息时:

字符串文本=; 对于EditText EditText:ListEditText{ text+=editText.getText.toString+\n; }
//显示文本那么,你在代码的哪一部分遇到了问题?电话号码显示在edittext中,但我无法从edittext中获取数据。谢谢@marmor,它正在工作。请告诉我当应用程序再次启动时如何发送数据。我已经尝试了SharedReference,但它不工作。这非常有用。谢谢
String ct_one = et_one.getText().toString();
String ct_two = et_two.getText().toString();

List<String> strings = new ArrayList<>();
int index = 3; // the first dynamic id
MyEditText editText = (MyEditText) findViewById(index);
while (editText != null) {
    strings.add(editText.getText().toString());
}

Log.d("found strings: " + ct_one + ", " + ct_two + ", and: " + Arrays.toString(strings));
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
Editor editor = prefs.edit();
editor.putString("value_one", ct_one);
editor.putString("value_two", ct_two);
for (int i = 0; i < strings.size(); i++) {
    editor.putString("value" + i, strings.get(i));
}
editor.apply(); // actually saves the edits into the prefs file
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
String ct_one = prefs.getString("value_one");
String ct_two = prefs.getString("value_two");
List<String> strings = new ArrayList<>();
int i = 0;
while (prefs.contains("value" + i)) {
    strings.add(prefs.getString("value" + i));
}
private ArrayList<EditText> ListEditText = new ArrayList<>();
ListEditText.add(new_editText);