Java. Android. Сохраните SpannableStringBuilder. Сохранить ArrayList - PullRequest
0 голосов
/ 17 июня 2020

У меня разные данные. Например, 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...