Android: 如何保存转换为数组值的 EditText 并将它们加载回原位
Android: How to save EditText converted to Array values and load them back in place
作为一个Android编程的新手,我终于完成了除了save/load系统之外我希望我的应用程序具有的大部分功能。 (虽然我还是要设计界面。)
在我继续之前,这是我的保存按钮代码:
saveList.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("Save List");
final EditText saveName = new EditText(MainActivity.this);
saveName.setInputType(InputType.TYPE_CLASS_TEXT);
builder.setView(saveName);
builder.setPositiveButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
builder.setNegativeButton("Save", new DialogInterface.OnClickListener()
@Override
public void onClick(DialogInterface dialog, int which) {
m_Text = saveName.getText().toString();
}
});
builder.show();
}
现在,我想学习(知道)的是 method/code 如何从我的数组中保存值:
ArrayList<String> values = new ArrayList<>();
int idList[] = new int[]{R.id.textBox1, R.id.textBox2, R.id.textBox3,
R.id.textBox4, R.id.textBox5, R.id.textBox6};
for (int id : idList) {
String stringList = ((EditText) findViewById(id)).getText().toString();
if (!TextUtils.isEmpty(stringList)) {
values.add(stringList);
}
}
myItems = values.toArray(new String[values.size()]);
并将这些值加载到各自的位置
(例如,myItems[0] 应放在 textBox1 中,myItems[1] 应放在 textBox2 中,依此类推...)。
如有任何帮助,我们将不胜感激。非常感谢。
编辑:我对这个问题的错误误导。我想知道如何将值保存到文本文件或 android 给定文件中,然后加载它供以后使用。
如果您想将所有字符串恢复回 EditText,您需要维护内容和 EditText 之间的映射。在你上面的例子中,你只存储了不为空的字符串。所以假设您的第一个 EditText 是空的,您不会将它存储在 values
中。但是,如果您这样做,您的整个订单将一团糟。您将不知道将哪个字符串放在哪里。最快的解决方法是存储所有 EditTexts 字符串,即使它是空的。所以你的代码会变成
for (int id : idList) {
String stringList = ((EditText) findViewById(id)).getText().toString();
// Store everything in values
values.add(stringList);
}
myItems = values.toArray(new String[values.size()]);
然后要加载所有内容,您可以执行类似
的操作
for (int i = 0; i < idList.length; i++) {
((EditText) findViewById(idList[i])).setText(myItems[i]);
}
作为一个Android编程的新手,我终于完成了除了save/load系统之外我希望我的应用程序具有的大部分功能。 (虽然我还是要设计界面。)
在我继续之前,这是我的保存按钮代码:
saveList.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("Save List");
final EditText saveName = new EditText(MainActivity.this);
saveName.setInputType(InputType.TYPE_CLASS_TEXT);
builder.setView(saveName);
builder.setPositiveButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
builder.setNegativeButton("Save", new DialogInterface.OnClickListener()
@Override
public void onClick(DialogInterface dialog, int which) {
m_Text = saveName.getText().toString();
}
});
builder.show();
}
现在,我想学习(知道)的是 method/code 如何从我的数组中保存值:
ArrayList<String> values = new ArrayList<>();
int idList[] = new int[]{R.id.textBox1, R.id.textBox2, R.id.textBox3,
R.id.textBox4, R.id.textBox5, R.id.textBox6};
for (int id : idList) {
String stringList = ((EditText) findViewById(id)).getText().toString();
if (!TextUtils.isEmpty(stringList)) {
values.add(stringList);
}
}
myItems = values.toArray(new String[values.size()]);
并将这些值加载到各自的位置
(例如,myItems[0] 应放在 textBox1 中,myItems[1] 应放在 textBox2 中,依此类推...)。
如有任何帮助,我们将不胜感激。非常感谢。
编辑:我对这个问题的错误误导。我想知道如何将值保存到文本文件或 android 给定文件中,然后加载它供以后使用。
如果您想将所有字符串恢复回 EditText,您需要维护内容和 EditText 之间的映射。在你上面的例子中,你只存储了不为空的字符串。所以假设您的第一个 EditText 是空的,您不会将它存储在 values
中。但是,如果您这样做,您的整个订单将一团糟。您将不知道将哪个字符串放在哪里。最快的解决方法是存储所有 EditTexts 字符串,即使它是空的。所以你的代码会变成
for (int id : idList) {
String stringList = ((EditText) findViewById(id)).getText().toString();
// Store everything in values
values.add(stringList);
}
myItems = values.toArray(new String[values.size()]);
然后要加载所有内容,您可以执行类似
的操作 for (int i = 0; i < idList.length; i++) {
((EditText) findViewById(idList[i])).setText(myItems[i]);
}