首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将可序列化对象列表保存到sharedPreferences

将可序列化对象列表保存到sharedPreferences
EN

Stack Overflow用户
提问于 2013-02-05 18:57:04
回答 3查看 25.3K关注 0票数 18

有人能告诉我如何将自定义Serializable对象列表保存到SharedPreference中吗?我是安卓新手,我想把ArrayList<Contact> list保存到共享首选项中。

代码语言:javascript
复制
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;
    }



}
EN

回答 3

Stack Overflow用户

发布于 2013-05-17 19:31:59

另一个很好的解决方案是使用GSON。下面是一个例子:

代码语言:javascript
复制
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;
}

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

很简单,对吧?;)

保重

票数 33
EN

Stack Overflow用户

发布于 2013-02-05 19:10:34

最简单的出路?

转换为JSON并将其另存为String

票数 3
EN

Stack Overflow用户

发布于 2013-02-05 19:01:46

如果它已经序列化了,那么你可以直接把它放进去。这篇文章中被接受的答案将为你指明方向:Save ArrayList to SharedPreferences

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14705860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档