Android SQLite _id Spalte Problem
-
25-09-2019 - |
Frage
Ich bin ein Neuling in android, arbeiten Liste Adapter jetzt. Ich weiß, dass irgendeine Art von Liste Adapter _id Spalte müssen die Daten zu verarbeiten. Ich stelle eine _id Spalte, aber ich konnte es nicht funktioniert. Ich folge Notizblock Beispiel, so ist hier mein Code:
erstelle ich die Db durch diese Aussage:
private static final String DB_TABLE = "radios";
public static final String KEY_NAME = "name";
public static final String KEY_URL = "url";
public static final String KEY_ROWID = "_id";
private static final String db_create = "Create table" + DB_TABLE + "( "+ KEY_ROWID +" integer Primärschlüssel Autoinkrement" + KEY_NAME + "Text nicht null, "+ KEY_URL +" text nicht null);"
eine dbhelper-Klasse verwenden:
private static class DBHelper extends SQLiteOpenHelper {
DBHelper(Context context) {
super(context, DB_NAME, null, DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(DB_CREATE);
}
@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 " + DB_TABLE);
onCreate(db);
}
}
ich alle Datensätze in db Hier erhalten:
public Cursor getAllRadios() {
return db.query(DB_TABLE, new String[] {KEY_ROWID,KEY_NAME,KEY_URL}, null, null, null, null, null);
}
Und mein Adapter:
String[] from = new String[] { DBAdapter.KEY_NAME };
int[] to = new int[] { R.id.text1 };
try{
SimpleCursorAdapter radios = new SimpleCursorAdapter(this, R.layout.list_item, cursor , from, to);
setListAdapter(radios);
}
catch(Exception e){
e.printStackTrace();
}
Ich könnte nicht irgendwelche Probleme finden, aber ich bekomme immer noch keine solche Spalte als „_id“ Fehler. Irgendwelche Ideen?
Lösung
Hmm, SQL-Code in der Tabelle für die Erstellung sieht für mich in Ordnung (auch wenn Sie Ihre Spaltennamen in Anführungszeichen, nur um sicher einschließen könnte zu sein). Aber vielleicht haben Sie bereits über einen alten Tisch, die nicht aktualisiert wird? Nur um sicherzugehen. Schritt DB_VERSION und führen Sie wieder