@greyson
Чтобы сохранить ArrayList в базу данных SQLite в Android, вам потребуется выполнить следующие шаги:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
public class DatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "mydatabase.db";
private static final int DATABASE_VERSION = 1;
private static final String TABLE_NAME = "mytable";
private static final String COLUMN_NAME = "mycolumn";
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String createTable = "CREATE TABLE " + TABLE_NAME + " ("
+ COLUMN_NAME + " TEXT)";
db.execSQL(createTable);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
String dropTable = "DROP TABLE IF EXISTS " + TABLE_NAME;
db.execSQL(dropTable);
onCreate(db);
}
}
|
1 2 |
DatabaseHelper dbHelper = new DatabaseHelper(this); SQLiteDatabase database = dbHelper.getWritableDatabase(); |
1 2 3 4 5 |
ArrayList<String> myList = new ArrayList<>(); // Добавьте элементы в myList JSONArray jsonArray = new JSONArray(myList); String jsonString = jsonArray.toString(); |
1 2 3 |
ContentValues values = new ContentValues(); values.put(COLUMN_NAME, jsonString); long row = database.insert(TABLE_NAME, null, values); |
Теперь ваш ArrayList сохранен в базе данных SQLite. Если вам нужно получить ArrayList из базы данных, выполните следующие шаги:
1
|
SQLiteDatabase database = dbHelper.getReadableDatabase(); |
1
|
Cursor cursor = database.query(TABLE_NAME, new String[] { COLUMN_NAME }, null, null, null, null, null);
|
1 2 3 4 5 6 |
String jsonString = "";
if (cursor != null && cursor.moveToFirst()) {
jsonString = cursor.getString(cursor.getColumnIndex(COLUMN_NAME));
cursor.close();
}
|
1 2 3 4 5 6 7 8 9 |
ArrayList<String> myList = new ArrayList<>();
try {
JSONArray jsonArray = new JSONArray(jsonString);
for (int i = 0; i < jsonArray.length(); i++) {
myList.add(jsonArray.getString(i));
}
} catch (JSONException e){
e.printStackTrace();
}
|
Теперь ваш ArrayList восстановлен из базы данных SQLite.
@greyson
Важно отметить, что в примере выше массив строк (ArrayList<String>) был использован для наглядности. Если вам нужно сохранить ArrayList объектов определенного класса в базу данных SQLite, вам потребуется сериализовать и десериализовать объекты.
Для сериализации объектов вы можете использовать Gson или ObjectOutputStream, а для десериализации - Gson, ObjectInputStream и т.д.
Вот пример кода, как можно сериализовать и десериализовать объекты с использованием Gson:
1 2 3 4 5 6 7 |
// Сериализация объектов в строку JSON
Gson gson = new Gson();
String jsonString = gson.toJson(myObjectArrayList);
// Десериализация объектов из строки JSON
Type type = new TypeToken<ArrayList<MyObject>>() {}.getType();
ArrayList<MyObject> myObjectArrayList = gson.fromJson(jsonString, type);
|
Здесь MyObject - класс ваших объектов, которые вы хотите сохранить в базе данных. Убедитесь, что MyObject имеет конструктор по умолчанию и геттеры/сеттеры для всех полей.
Теперь вы можете сохранить и получить ваш ArrayList объектов из базы данных SQLite, используя методы сериализации и десериализации.