Die Datenbank sieht aktuell so aus.
Java: EintraegeDatabase
package de.androidnewcomer.database;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import de.androidnewcomer.bonitierungsverfahren.Eintraege;
public class EintraegeDatabase extends SQLiteOpenHelper {
public static EintraegeDatabase INSTANCE = null;
private static final String DB_NAME = "BONITIERUNG";
private static final int VERSION = 10;
private static final String TABLE_NAME = "daten";
public static final String ID_COLUMN = "ID";
public static final String KIEZ_COLUMN = "kiez";
public static final String GEBIETSSTRASSE_COLUMN = "gebietsstrasse";
public static final String STRASSENZUG_COLUMN = "strassenzug";
public static final String HAUSNUMMER_COLUMN = "hausnummer";
public static final String HAUSNUMMER_GERADE = "hausnummer_gerade";
public static final String HAUSNUMMER_UNGERADE = "hausnummer_ungerade";
public static final String BEMERKUNG_COLUMN = "bemerkung";
public static final String DATUM_COLUMN = "datum";
public static final String MUELLPLATZ_COLUMN = "muellplatz";
public static final String GROESSE1_COLUMN = "groesse1";
private EintraegeDatabase(final Context context){
super(context, DB_NAME, null, VERSION);
}
public static EintraegeDatabase getInstance(final Context context){
if(INSTANCE == null){
INSTANCE = new EintraegeDatabase(context);
}
return INSTANCE;
}
@Override
public void onCreate(SQLiteDatabase db) {
String createQuery = "CREATE TABLE " + TABLE_NAME + " (" + ID_COLUMN + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
KIEZ_COLUMN + " TEXT, " +
GEBIETSSTRASSE_COLUMN + " TEXT, " +
STRASSENZUG_COLUMN + " TEXT, " +
HAUSNUMMER_COLUMN + " TEXT, " +
HAUSNUMMER_GERADE + " Text, " +
HAUSNUMMER_UNGERADE + " Text, " +
BEMERKUNG_COLUMN + " TEXT, " +
DATUM_COLUMN + " INTEGER, " +
MUELLPLATZ_COLUMN + " Text, " +
GROESSE1_COLUMN + " Text)"; //Integer?? Position des Spinners speichern und die Position in String umwandeln mit getPosition/toString?
db.execSQL(createQuery);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
String dropTabel = "DROP TABLE IF EXISTS " + TABLE_NAME;
db.execSQL(dropTabel);
onCreate(db);
}
public Eintraege createEintraege(final Eintraege eintraege){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(KIEZ_COLUMN, eintraege.getKiez());
values.put(GEBIETSSTRASSE_COLUMN, eintraege.getGebietsstrasse());
values.put(STRASSENZUG_COLUMN, eintraege.getStrassenzug());
values.put(HAUSNUMMER_COLUMN, eintraege.getHausnummer());
values.put(HAUSNUMMER_GERADE, eintraege.isHausnummer_gerade() ? 1 : 0);
values.put(HAUSNUMMER_UNGERADE, eintraege.isHausnummer_ungerade() ? 1 : 0);
values.put(BEMERKUNG_COLUMN, eintraege.getBemerkung());
values.put(DATUM_COLUMN, eintraege.getDate() == null ? null : eintraege.getDate().getTimeInMillis() / 1000);
values.put(MUELLPLATZ_COLUMN, eintraege.getMuellplatz());
values.put(GROESSE1_COLUMN, eintraege.getGroesse1());
long newID = db.insert(TABLE_NAME, null, values);
db.close();
return readEintraege(newID);
}
public Eintraege readEintraege(final long id){
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.query(TABLE_NAME, new String[]{ID_COLUMN, KIEZ_COLUMN, GEBIETSSTRASSE_COLUMN, STRASSENZUG_COLUMN, HAUSNUMMER_COLUMN, HAUSNUMMER_GERADE, HAUSNUMMER_UNGERADE, BEMERKUNG_COLUMN, DATUM_COLUMN, MUELLPLATZ_COLUMN,
GROESSE1_COLUMN}, ID_COLUMN + " =?",
new String[]{String.valueOf(id)}, null, null, null);
Eintraege eintraege = null;
if(cursor != null && cursor.getCount() > 0){
cursor.moveToFirst();
/* int idIndex = cursor.getColumnIndex(ID_COLUMN);
int idKiez = cursor.getColumnIndex(KIEZ_COLUMN);
int idGebietsstrasse = cursor.getColumnIndex(GEBIETSSTRASSE_COLUMN);
int idStrassenzug = cursor.getColumnIndex(STRASSENZUG_COLUMN);
int idHausnummer = cursor.getColumnIndex(HAUSNUMMER_COLUMN);
int idBemerkung = cursor.getColumnIndex(BEMERKUNG_COLUMN);
long idIND = cursor.getLong(idIndex);
String kiez = cursor.getString(idKiez);
String gebietsstrasse = cursor.getString(idGebietsstrasse);
String strassenzug = cursor.getString(idStrassenzug);
String hausnummer = cursor.getString(idHausnummer);
String bemerkung = cursor.getString(idBemerkung); */
eintraege = new Eintraege(cursor.getString(cursor.getColumnIndex(KIEZ_COLUMN)));
eintraege.setId(cursor.getLong(cursor.getColumnIndex(ID_COLUMN)));
eintraege.setGebietsstrasse(cursor.getString(cursor.getColumnIndex(GEBIETSSTRASSE_COLUMN)));
eintraege.setStrassenzug(cursor.getString(cursor.getColumnIndex(STRASSENZUG_COLUMN)));
eintraege.setHausnummer(cursor.getString(cursor.getColumnIndex(HAUSNUMMER_COLUMN)));
eintraege.setHausnummer_gerade(cursor.getInt(cursor.getColumnIndex(HAUSNUMMER_GERADE)) == 1);
eintraege.setHausnummer_ungerade(cursor.getInt(cursor.getColumnIndex(HAUSNUMMER_UNGERADE)) == 1);
eintraege.setBemerkung(cursor.getString(cursor.getColumnIndex(BEMERKUNG_COLUMN)));
Calendar calendar = null;
calendar = Calendar.getInstance();
calendar.setTimeInMillis(cursor.getInt(cursor.getColumnIndex(DATUM_COLUMN)) * 1000);
eintraege.setMuellplatz(cursor.getString(cursor.getColumnIndex(MUELLPLATZ_COLUMN)));
eintraege.setGroesse1(cursor.getString(cursor.getColumnIndex(GROESSE1_COLUMN)));
// eintraege = new Eintraege(idIND, kiez, gebietsstrasse, strassenzug, hausnummer, hausnummer_gerade, hausnummer_ungerade, bemerkung, calendar);
}
db.close();
return eintraege;
}
public List<Eintraege> readAllEintraege(){
List<Eintraege> eintraege1 = new ArrayList<>();
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery("SELECT * FROM " + TABLE_NAME, null);
if(cursor.moveToFirst()){
do{
Eintraege eintraege = readEintraege(cursor.getLong(cursor.getColumnIndex(ID_COLUMN)));
if(eintraege1 != null){
eintraege1.add(eintraege);
}
}while(cursor.moveToNext());
}
db.close();
return eintraege1;
}
public Eintraege updateEintraege(final Eintraege eintraege){
SQLiteDatabase db = this.getReadableDatabase();
ContentValues values = new ContentValues();
values.put(KIEZ_COLUMN, eintraege.getKiez());
values.put(GEBIETSSTRASSE_COLUMN, eintraege.getGebietsstrasse());
values.put(STRASSENZUG_COLUMN, eintraege.getStrassenzug());
values.put(HAUSNUMMER_COLUMN, eintraege.getHausnummer());
values.put(HAUSNUMMER_GERADE, eintraege.isHausnummer_gerade() ? 1 : 0);
values.put(HAUSNUMMER_UNGERADE, eintraege.isHausnummer_ungerade() ? 1 : 0);
values.put(BEMERKUNG_COLUMN, eintraege.getBemerkung());
values.put(DATUM_COLUMN, eintraege.getDate() == null ? null : eintraege.getDate().getTimeInMillis() / 1000);
values.put(MUELLPLATZ_COLUMN, eintraege.getMuellplatz());
values.put(GROESSE1_COLUMN, eintraege.getGroesse1());
db.update(TABLE_NAME, values, ID_COLUMN + " =?", new String []{String.valueOf((eintraege.getId()))});
db.close();
return this.readEintraege(eintraege.getId());
}
public void deleteEintraege(final Eintraege eintraege){
SQLiteDatabase db = this.getWritableDatabase();
db.delete(TABLE_NAME, ID_COLUMN + " =?", new String[]{String.valueOf(eintraege.getId())});
db.close();
}
public void deleteAllEintraege(){
SQLiteDatabase db = this.getWritableDatabase();
db.execSQL("DELETE FROM " + TABLE_NAME);
db.close();
}
public Cursor getAllEintraegeAsCursor(){
return this.getReadableDatabase().rawQuery("SELECT " + ID_COLUMN + " as _id, " + KIEZ_COLUMN + " , " + GEBIETSSTRASSE_COLUMN + " , " + STRASSENZUG_COLUMN + " , " +
HAUSNUMMER_COLUMN + " , " + HAUSNUMMER_GERADE + " , " + HAUSNUMMER_UNGERADE + " , " + BEMERKUNG_COLUMN + " , " + DATUM_COLUMN + " , " + MUELLPLATZ_COLUMN + " , " +
GROESSE1_COLUMN + " FROM " + TABLE_NAME, null);
}
public Eintraege getFirstEintrage(){
List<Eintraege> eintraege = this.readAllEintraege();
if(eintraege.size() > 0){
return eintraege.get(0);
}
return null;
}
}
Alles anzeigen
Momentan wird mir als Spinner Inhalt jedes mal 10 angezeigt (zur Auswahl sind 40, 80, 160, 240, 600). Ich vermute es wird die Position in der Datenbank gespeichert. Also die 10. Stelle. Ist aber nur eine Vermutung.