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?

War es hilfreich?

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top