2014-05-10 3 views
7

numaralı blob olarak blob olarak kaydedilir. Bu gridview var. Öğesini sqlite olarak blob olarak kaydetmek istiyorum. i sqlite hasta verileri kaydetmek listesini açtığınızda bu yüzden sadece benim gridviewAndroid Bu özellik sqlite

için adapter.notifyDataSetChangeditems kaydetmek ve çağrı yük ben bunu denedim ama NotSerializableException hata

Liste öğeleri = new ArrayList() olsun;

public static byte[] serializeObject(Object o) { 
     ByteArrayOutputStream bos = new ByteArrayOutputStream(); 

     try { 
      ObjectOutput out = new ObjectOutputStream(bos); 
      out.writeObject(o); 
      out.close(); 

      // Get the bytes of the serialized object 
      byte[] buf = bos.toByteArray(); 

      return buf; 
     } catch (IOException ioe) { 
      Log.e("serializeObject", "error", ioe); 

      return null; 
     } 
    } 

benim insert satır

public long insertRow(byte[] data) { 
    /* 
    * CHANGE 3: 
    */ 
    // TODO: Update data in the row with new fields. 
    // TODO: Also change the function's arguments to be what you need! 
    // Create row's data: 
    ContentValues initialValues = new ContentValues(); 
    initialValues.put(KEY_DATA, data); 

    // Insert it into the database. 
    return db.insert(DATABASE_TABLE, null, initialValues); 
} 

sonra ben de ben şaşırtmak olduğum serialize nesne

myDB.insertRow(MyDBAdapter.serializeObject(items)); 

yerleştirin. bağdaştırıcıyı veya öğelerin listesini kaydetmeli miyim?

cevap

21

benim DB DAMLA olarak veri saklamak şekilde, JSON dönüştürerek ve daha sonra bayt depolanması gereğidir. , ör.

ArrayList<Person> persons = new ArrayList<>(); 
Gson gson = new Gson(); 
ContentValues values = new ContentValues(); 
values.put(MyProvider.KEY_DATA, gson.toJson(persons).getBytes()); 
// insert or update the DB 

Ve

listesine geri

byte[] blob = cursor.getBlob(cursor.getColumnIndex(MyProvider.KEY_DATA)); 
String json = new String(blob); 
Gson gson = new Gson(); 
ArrayList<Person> persons = gson.fromJson(json, new TypeToken<ArrayList<Person>>() 
           {}.getType()); 

Edit almak için: En son soruyu cevaplamak için, verilerinizi (öğelerin listesi) saklamalısınız.

+0

Ne demek istiyorsun? Öğelerin bir listesi nasıl saklanır? Ya da nasıl geri alınır? –

+0

veri json olduğundan Rica ederim :) – user3487657

+0

Onları nasıl, tıpkı metin yerine bir damla gibi DB tasarrufu için herhangi bir yararı yoktur ? Soruyorum çünkü jsonu bir DB'ye saklıyorum. –