2012-03-20 111 views
0

我正在研究一个小的Android应用程序!
我有一个类MyPref
使用json将数据存储到sharedpreferences

public class MyPref{ 
{ 
java.util.Calendar cal; 
int id; 
String name; 
//some more methods and constructor 
} 

我需要存储MyPref对象的数组来sharedpreferences ...

java.util.ArrayList<MyPref> array=new java.util.ArrayList<MyPref>(); 
array.add(//MyPref object); 
array.add(//MyPref object); 

现在我怎么可以存储此ArrayList对象sharedpreferences ..
我试过..

JSONObject o=new JSONObject(); 
o.put("list",array); 
SharedPreferences s=PreferenceManager.getDefaultSharedPreferences(this); 
Editor edt=s.edit(); 
edt.putString("mylist",o.toString()); 
edt.commit(); 

但这不起作用!
有没有其他的选择?
plz帮助我..
感谢名单中advace ..

+0

您需要比“不起作用”更具体。是否有logcat错误,ANR,某种形式的可见错误,或者你看不到任何东西,发生了什么... – 2012-03-20 20:33:52

+0

它获得字符串上的java.lang.ClassCasteException – Navaneeth 2012-03-20 20:37:32

+0

我应该使用Gson吗? – Navaneeth 2012-03-20 20:41:32

回答

0
JSONObject o=new JSONObject(); 
o.put("list",array); 

我可能是错的,但我敢肯定你不能用JSONObject.put(...)把任意的Java对象转换为JSONObject。从文档...

公众的JSONObject把(字符串名称,对象的值)

一个JSONObject,JSONArray,字符串,布尔值,整数,长,双,NULL,或为空。可能不是NaN或无限。

没有提及能够放置任何其他类型的Java对象,并且您试图放置ArrayList<MyPref>

+0

是啊.. 这doestnot工作! – Navaneeth 2012-03-20 21:36:43