Question

Je suis un débutant dans Android, en travaillant sur les cartes de liste en ce moment. Je sais que certains types d'adaptateurs liste besoin colonne _id pour traiter les données. Je fournis une colonne _id mais je ne pouvais pas le faire fonctionner. Je suis par exemple le bloc-notes, donc voici mon code:

Je crée la db par cette déclaration:

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";

static private String = DB_CREATE         "Créer la table" + db_table + "( "+ KEY_ROWID +" entier autoincrement clé primaire",         + Key_name + "texte non nul, "+ KEY_URL +" texte non nul);";

En utilisant une classe 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);
    }
}

Ici, je reçois tous les enregistrements db:

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

Et mon adaptateur:

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

Je ne pourrais pas trouver des problèmes, mais je reçois toujours pas de colonne comme « _id » erreur . Toutes les idées?

Était-ce utile?

La solution

Hmm, votre code SQL pour créer la table semble bien me (même si vous pouvez joindre vos noms de colonnes entre guillemets juste pour être sûr). Mais peut-être vous avez déjà une table ancienne existante qui n'est pas mis à jour? Juste pour être sûr:. DB_VERSION incrément et encore exécuter

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top