De andere antwoorden leken niet te beantwoorden hoe de database daadwerkelijk met initiële waarden moest worden gevuld, dus ik zal hier delen hoe ik het deed.
In principe slaat u uw databasekolommen op als tekenreeksarrays in een xml-bestand. Ik zal slechts één array laten zien, maar je zou meer kunnen doen voor andere kolommen. (Je zou echter voorzichtig moeten zijn met meerdere kolommen om de array-volgorde niet te verknoeien, en dus je databaserijen te verknoeien.)
Maak een bestand /res/values/arrays.xml en voeg de array eraan toe.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="my_array">
<item>string 1</item>
<item>string 2</item>
<item>string 3</item>
<item>string 4</item>
<item>string 5</item>
</string-array>
</resources>
Dan kunt u die array krijgen wanneer u de database in uw helperklasse maakt. Dit is wat ik deed:
private static class DatabaseHelper extends SQLiteOpenHelper {
private final Context fContext;
// constructor
DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
fContext = context;
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE " + TABLE_NAME + " ("
+ FIRST_COLUMN + " INTEGER PRIMARY KEY,"
+ SECOND_COLUMN + " TEXT NOT NULL,"
+ THIRD_COLUMN + " INTEGER,"
+ FOURTH_COLUMN + " TEXT NOT NULL"
+ ");");
// Initialize the db with values from my_array.xml
final int DEFAULT_THIRD_COLUMN = 1;
final String DEFAULT_FOURTH_COLUMN = "";
ContentValues values = new ContentValues();
Resources res = fContext.getResources();
String[] myArray = res.getStringArray(R.array.my_array);
for (String item : myArray){
values.put(SECOND_COLUMN, item);
values.put(THIRD_COLUMN, DEFAULT_THIRD_COLUMN);
values.put(FOURTH_COLUMN, DEFAULT_FOURTH_COLUMN);
db.insert(TABLE_NAME, null, values);
}
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.w(TAG, "Upgrading database from version " + oldVersion + " to "
+ newVersion + ", which will destroy all old data");
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
onCreate(db);
}
}
Zie deze links voor meer hulp:
- String-bronnen - String-array-documenten
- Android:een tabel vullen vanuit het bronbestand met behulp van stringarray (SQLite)
Een ander ding dat ik heb gedaan, is de databases van tevoren maken en deze vervolgens naar de databasemap kopiëren wanneer de app is geïnstalleerd. Dat kan beter werken als u een grote hoeveelheid gegevens heeft en u de database niet van internet wilt downloaden. Als je je database wilt kopiëren, zie dan dit antwoord.