@greyson
Чтобы сохранить ArrayList в базу данных SQLite в Android, вам потребуется выполнить следующие шаги:
- Создайте класс-помощник для работы с базой данных, который будет наследовать от класса SQLiteOpenHelper. В этом классе вы должны определить таблицу и столбцы, где будет храниться ваш ArrayList.
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);
}
}
|
- В вашей активности или фрагменте создайте экземпляр класса DatabaseHelper и получите доступ к базе данных, вызвав метод getWritableDatabase().
1
2
|
DatabaseHelper dbHelper = new DatabaseHelper(this);
SQLiteDatabase database = dbHelper.getWritableDatabase();
|
- Преобразуйте ваш ArrayList в строку, например, с использованием JSON. Вызовите метод JSONArray.toJSONArray() для преобразования ArrayList в JSONArray, а затем вызовите метод toString() для преобразования JSONArray в строку.
1
2
3
4
5
|
ArrayList<String> myList = new ArrayList<>();
// Добавьте элементы в myList
JSONArray jsonArray = new JSONArray(myList);
String jsonString = jsonArray.toString();
|
- Вставьте полученную строку в базу данных с помощью метода insert().
1
2
3
|
ContentValues values = new ContentValues();
values.put(COLUMN_NAME, jsonString);
long row = database.insert(TABLE_NAME, null, values);
|
Теперь ваш ArrayList сохранен в базе данных SQLite. Если вам нужно получить ArrayList из базы данных, выполните следующие шаги:
- Получите доступ к базе данных, вызвав метод getReadableDatabase() из вашего экземпляра класса DatabaseHelper.
1
|
SQLiteDatabase database = dbHelper.getReadableDatabase();
|
- Выполните запрос к базе данных, используя метод query(). Вам нужно передать имя таблицы, список столбцов для выборки (в нашем случае это только один столбец) и другие параметры, если они есть.
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();
}
|
- Преобразуйте строку обратно в ArrayList, используя метод JSONArray. Если ваш ArrayList содержал объекты определенного класса, вы должны будете выполнять также десериализацию объектов из JSONArray.
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.