18

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;
    }



}
4

5 に答える 5

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;
}

gson の詳細については、http:

//code.google.com/p/google-gson/ をご覧ください 。;)
気をつけて

于 2013-05-17T11:31:59.147 に答える
7

JSON形式を使用しArrayListて、およびそれに含まれるオブジェクトをシリアル化し、String結果をSharedPreferences.

データを取得したい場合は、文字列を取得し、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();
于 2013-02-05T11:15:37.040 に答える
3

最も簡単な方法は?

に変換しJSONて保存しStringます。

于 2013-02-05T11:10:33.990 に答える
1

既にシリアル化されている場合は、そのまま入れることができます。この投稿で受け入れられた回答は、ArrayList を SharedPreferences に保存するという方向を示しています。

于 2013-02-05T11:01:45.900 に答える