2013-02-05 20 views
17

Bất kỳ ai có thể cho tôi biết cách tôi có thể lưu danh sách các đối tượng tùy chỉnh Serializable thành SharedPreference? Tôi mới sử dụng Android và tôi muốn lưu một số ArrayList<Contact> list vào các tùy chọn được chia sẻ.Lưu danh sách đối tượng có thể nối tiếp thành sharedPreferences

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



} 

Trả lời

7

Bạn có thể sử dụng định dạng JSON serialize ArrayList của bạn và các đối tượng mà nó chứa, và sau đó lưu trữ các kết quả String vào SharedPreferences.

Khi bạn muốn lấy lại dữ liệu, hãy truy lục chuỗi và sử dụng JSONArray để truy xuất từng đối tượng và thêm nó vào một ArrayList mới.

Nếu không, bạn chỉ có thể sử dụng Object(Input/Output)Stream lớp học và viết nó vào một tập tin differente sử dụng (để viết)

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(); 
+1

THANKS NÓ THÍCH –

1

Nếu nó đã tuần tự, sau đó bạn có thể chỉ cần đặt nó trong câu trả lời được chấp nhận trong bài viết này sẽ chỉ cho bạn theo hướng:. Save ArrayList to SharedPreferences

3

Cách dễ nhất ra?

Chuyển đổi thành JSON và lưu dưới dạng String.

33

Một giải pháp tốt nhất là sử dụng GSON. Dưới đây là một ví dụ:

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

Thông tin thêm về gson tại http://code.google.com/p/google-gson/

Khá đơn giản phải không? ;)
Hãy quan tâm

Các vấn đề liên quan