2015-02-11 38 views
2

我想將值保存在ArrayListSharedPreference。然後,我想從另一個類中調用ArrayList中的值,但它不保存。我怎樣才能做到這一點?使用SharedPreferences?要保存文件?或者創建Sqlite?感謝您的幫助。Android:保存ArrayList中的值

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    final Button saveButton = (Button)findViewById(R.id.button); 
    final Button delButton = (Button)findViewById(R.id.delButton); 
    final ListView listView = (ListView)findViewById(R.id.listView); 
    final EditText editText = (EditText)findViewById(R.id.editText); 
    final ArrayList<String> arrayList = new ArrayList<String>(); 

    SharedPreferences sharedPref = this.getPreferences(Activity.MODE_PRIVATE); 
    SharedPreferences.Editor editor = this.getPreferences(Activity.MODE_PRIVATE).edit(); 
    editor.putString("numbers", arrayList.toString()); 
    editor.commit(); 

    String arrayString = sharedPref.getString("numbers", null); 

    final ArrayAdapter<String> arrayAdapter; 
    arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,arrayList); 
    listView.setAdapter(arrayAdapter); 

    saveButton.setOnClickListener(new View.OnClickListener() 
    { 

     public void onClick(View v) 
     { 
      String str = editText.getText().toString(); 
      Integer cout = listView.getCount()+ 1; 
      String str1 = cout.toString().concat("."+str); 
      arrayList.add(listView.getCount(), str1); 

      arrayAdapter.notifyDataSetChanged(); 
      Toast.makeText(getApplicationContext(), "Data Saved", Toast.LENGTH_SHORT).show(); 
      editText.setText(" "); 
     } 
    }); 

    delButton.setOnClickListener(new View.OnClickListener() 
    { 

     public void onClick(View v) 
     { 
      arrayList.remove(arrayList.size()-1); 
      arrayAdapter.notifyDataSetChanged(); 
     } 
    }); 

} 

回答

0

我認爲你不能做到這一點,因爲editor.putString("numbers", arrayList.toString()); object.toString()不轉換的ArrayList爲String它只是讓一些奇怪的類似「@ Object3223rw」,看看這個職位,而不是Save ArrayList to SharedPreferences

0

保存列表:

editor.putString("List", TextUtils.join(",", myList)); 

獲取列表:

String serialized = sharedPref.getString("List", null); 
myList = Arrays.asList(TextUtils.split(serialized, ",")); 

List而不是ArrayList有效的觀察結果,因爲asList返回List。如果您有重複的字符串與set一起工作,Tofasio的答案不起作用。

+0

這是錯誤。不兼容的類型。必需:java.util.ArrayList找到:java.util.list – AndroidDeveloper 2015-02-11 17:34:01

+0

使這個'List arrayList = new ArrayList ();' – kelvincer 2015-02-11 17:40:21

+0

如果我這樣做,它不能添加和刪除值的值,因爲它給錯誤: – AndroidDeveloper 2015-02-11 18:35:58