Domanda

Sono un novizio in Android, lavorando su adattatori della lista in questo momento. So che un certo tipo di adattatori Lista bisogno colonna _id per elaborare i dati. Fornisco una colonna _id ma non ho potuto farlo funzionare. Seguo ad esempio il blocco note, ecco il mio codice:

I creare il db da questa dichiarazione:

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 AutoIncrement chiave primaria,"         + KEY_NAME + "il testo non nullo, "+ KEY_URL +" testo non null);";

Utilizzo di una classe di DBHelper:

 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);
    }
}

Qui ho tutti i record in dB:

public Cursor getAllRadios() {
    return db.query(DB_TABLE, new String[] {KEY_ROWID,KEY_NAME,KEY_URL}, null, null, null, null, null);
}

E il mio adattatore:

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();
    }

Non riuscivo a trovare alcun problema ma ho ancora ottenere non esiste colonna come "_id" di errore. Tutte le idee?

È stato utile?

Soluzione

Hmm, il codice SQL per la creazione della tabella guarda bene a me (anche se si potrebbe includere la parte nomi di colonna tra virgolette solo per essere sicuri). Ma forse avete già una vecchia tabella esistente che non viene aggiornato? Giusto per essere sicuri:. Incremento DB_VERSION ed eseguire nuovamente

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top