У меня разные данные. Например, SpannableStringBuilder и ArrayList. Мне нужно сохранить их, чтобы использовать позже. Желательно в таблице sql. Для этого мне нужно преобразовать их в BLOB, а затем разархивировать обратно. Как это сделать лучше?
(Например, в ios я могу легко и просто заархивировать любые данные, записать их в какой-нибудь файл plist, а затем разархивировать обратно.)
[NSKeyedArchiver archivedDataWithRootObject:self.myMutableAttributedString requiringSecureCoding:NO error:nil];
self.myMutableAttributedString = [NSKeyedUnarchiver unarchivedObjectOfClass:[NSMutableAttributedString class] fromData:[plist objectForKey:@"key"] error:nil];
Я попробую вот так, но получаю ошибку.
java.io.NotSerializableException: android.text.SpannableStringBuilder
void statadd2(String dbtableStat2, SpannableStringBuilder text, List<Map<String, Set<String>>> array) throws SQLException, IOException {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bos);
oos.writeObject(text);
oos.flush();
oos.close();
byte [] datatext = bos.toByteArray();
bos = new ByteArrayOutputStream();
oos = new ObjectOutputStream(bos);
oos.writeObject(array);
oos.flush();
oos.close();
byte [] dataarray = bos.toByteArray();
ContentValues values = new ContentValues();
values.put("text", datatext);
values.put("array", dataarray);
myDataBase.insert(dbtableStat2, null, values);
}
И я хочу, чтобы получилось вот так.
void statget2() throws SQLException, IOException, ClassNotFoundException {
String pyti = "SELECT * FROM [" + dbtableStat2 + "]";
Cursor catCursor = myDataBase.rawQuery(pyti, null);
while (catCursor.moveToNext()) {
byte [] datatext = catCursor.getBlob(catCursor.getColumnIndex("text"));
ByteArrayInputStream in = new ByteArrayInputStream(datatext);
ObjectInputStream is = new ObjectInputStream(in);
text = (SpannableStringBuilder)is.readObject();
byte [] datatrueinserts = catCursor.getBlob(catCursor.getColumnIndex("array"));
in = new ByteArrayInputStream(datatrueinserts);
is = new ObjectInputStream(in);
trueinserts = (List<Map<String, Set<String>>>)is.readObject();
}
catCursor.close();
}
С библиотекой XStream я получаю null в SpannableStringBuilder.