2016-04-28 73 views
0

作爲一名剛剛接觸Android編程的人,我終於完成了大部分我希望我的應用具有除保存/加載系統以外的功能。 (雖然我還是要設計接口。)Android:如何保存EditText轉換爲Array值並將它們加載回原位

我開始之前,這裏是我的保存按鈕代碼:

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給定文件中,然後加載它以備後用。

回答

0

如果您想要將所有字符串還原回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]); 
    } 
+0

又見面了!我應該提到,如果有空的EditText,應用程序將不會進入下一步,除非填充值。哇,我只是注意到我的問題中的錯誤,我的意思是保存它以備後用,例如保存列表然後退出然後再次訪問它。 –

+0

這完全改變了需求!在這種情況下,你應該看看'SharedPreferences'。我不會爲此編寫代碼,因爲代碼會很多,而且很簡單。看看[文檔](http://developer.android.com/training/basics/data-storage/shared-preferences.html)。 – Antrromet

+0

謝謝你的鏈接!這就是我需要知道的。我會接受你的回答,因爲你在這裏提供了一個。 –

相關問題