質問

私は今リストアダプタに取り組んで、アンドロイドで初心者です。私は、リストアダプタのいくつかの種類がデータを処理するために_id列を必要と知っています。私は_id列を提供しますが、私はそれを動作させることができませんでした。私はメモ帳の例に従うので、ここに私のコードです:

Iこの文でDBを作成します:

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

プライベート静的最終列DB_CREATE =         "テーブルの作成" + DB_Tableの+ "( "+ KEY_ROWID +" 主キーオートインクリメント整数、"         + KEY_NAME + "テキストNOT NULL、 "+ KEY_URL +" テキストNOT NULL);"

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

ここで私は、DB内のすべてのレコードを取得します:

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

そして、私のアダプターます:

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

私はすべての問題を見つけるcouldntのが、私はまだ「_id」としてのはそのような列のエラーを取得していません。任意のアイデア?

役に立ちましたか?

解決

うーん、テーブルを作成するためのあなたのSQLコードは、私には罰金を探します(あなたは念のために引用符であなたの列名を囲むことができた場合でも)。しかし、多分あなたはすでにアップグレードされていない既存の古いテーブルを持っていますか?念のために:インクリメントDB_VERSIONして再度実行して、

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top