2015-02-11 36 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