Android:如何将EditText保存转换为Array值并将其加载回原位

时间:2016-04-28 15:52:25

标签: android android-edittext save load

作为一个不熟悉Android编程的人,我终于完成了除了保存/加载系统之外我希望我的应用程序拥有的大部分功能。 (虽然我仍然需要设计界面。)

在继续之前,这是我的保存按钮代码:

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();
}

现在,我想学习(知道)的是如何从我的数组中保存值的方法/代码:

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给定文件中,然后加载它以供以后使用。

1 个答案:

答案 0 :(得分:0)

如果要将所有字符串还原回EditTexts,则需要维护内容与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]);
    }