2013-02-05 18 views
17

Özel Serializable nesnelerini SharedPreference içine nasıl kaydedebileceğimi söyleyen var mı? Android için yeniyim ve bir ArrayList<Contact> list'u paylaşılan tercihlere kaydetmek istiyorum. Zaten tefrika iseSerializable Nesneleri Listenin Paylaşımına Kaydedilmesi

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



} 

cevap

7

Bunu içeren ArrayList ve nesneleri seri hale getirmek JSON biçimi kullanın ve sonra SharedPreferences içine String sonucu depolayabilir.

Verileri geri almak istediğinizde, her bir nesneyi almak ve yeni bir ArrayList öğesine eklemek için String'i alın ve JSONArray kullanın.

Aksi takdirde sadece başka iyi çözüm GSON kullanmaktır

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 iT wORKS –

3

En kolay çıkış yolu?

JSON'a dönüştürün ve String olarak kaydedin.

33

Object(Input/Output)Stream sınıfları kullanabilir ve (yazma için) kullanılarak differente dosyasına yazabilir.

Oldukça basit değil http://code.google.com/p/google-gson/ en GSON hakkında

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

fazla bilgi: İşte bir örnek? ;)
Kendinize iyi bakın

İlgili konular