将Serializable Objects List保存到sharedPreferences中

Usm*_*iaz 17 android

谁能告诉我如何将自定义Serializable对象列表保存 到SharedPreference?我是Android新手,我希望将其保存ArrayList<Contact> list到共享首选项中.

public class MainActivity extends SherlockFragmentActivity {
PlaceSlidesFragmentAdapter mAdapter;
ViewPager mPager;
PageIndicator mIndicator;

public static final String TAG = "detailsFragment";

public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.main,
            container, false);

    mAdapter = new PlaceSlidesFragmentAdapter(getActivity()
            .getSupportFragmentManager());

    mPager = (ViewPager) view.findViewById(R.id.pager);
    mPager.setAdapter(mAdapter);

    mIndicator = (CirclePageIndicator) view.findViewById(R.id.indicator);
    mIndicator.setViewPager(mPager);
    ((CirclePageIndicator) mIndicator).setSnap(true);

    mIndicator
            .setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
                @Override
                public void onPageSelected(int position) {
                    Toast.makeText(MainActivity.this.getActivity(),
                            "Changed to page " + position,
                            Toast.LENGTH_SHORT).show();
                }

                @Override
                public void onPageScrolled(int position,
                        float positionOffset, int positionOffsetPixels) {
                }

                @Override
                public void onPageScrollStateChanged(int state) {
                }
            });
    return view;
    }



}
Run Code Online (Sandbox Code Playgroud)

Gui*_*lhE 33

另一个好的解决方案是使用GSON.这是一个例子:

private static final String MAP = "map";    
private static final Type MAP_TYPE = new TypeToken<Map<MyObjA, MyObjB>>() {}.getType();

private static SharedPreferences prefs = MyApplication.getContext().getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);

private static Map<MyObjA, MyObjB> myMap;

public static void saveMap (Map<MyObjA, MyObjB> map) {
    SharedPreferences.Editor editor = prefs.edit();

    editor.putString(MAP, new Gson().toJson(map));
    editor.commit();
    myMap = map;
}

public static Map<MyObjA, MyObjB> loadMap() {
    if (myMap == null) {
        myMap = new Gson().fromJson(prefs.getString(MAP, null), MAP_TYPE);
    }
    return myMap;
}
Run Code Online (Sandbox Code Playgroud)

有关gson的更多信息,请访问http://code.google.com/p/google-gson/非常

简单吧?;)
保重


fla*_*yte 7

您可以使用JSON格式序列化您ArrayList及其包含的对象,然后将String结果存储到SharedPreferences.

当您想要获取数据时,检索String并使用a JSONArray检索每个对象并将其添加到新的ArrayList.

否则你可以简单地使用Object(Input/Output)Stream类并使用(写入)将其写入不同的文件

FileOutputStream fos = this.openFileOutput(fileName, MODE_PRIVATE);
final OutputStreamWriter osw = new OutputStreamWriter(fos);
JSONArray array = new JSONArray();

// Add your objects to the array

osw.write(array.toString());
osw.flush();
osw.close();
Run Code Online (Sandbox Code Playgroud)