2013-08-07 1 views
0

До сих пор я получил этуКак получить _ID с SimpleCursorAdapter

db = new MYDBHelper(this); 
    constantsCursor = db.getReadableDatabase().rawQuery(
      "SELECT _ID, title, value " + "FROM constants ORDER BY title", null); 
ListAdapter adapter = new SimpleCursorAdapter(this, R.layout.item, constantsCursor, new String[] { DBHelperMen2.TITLE, DBHelperMen2.VALUE }, new int[] {R.id.item_name, R.id.item_points }); 
listata = (ListView) findViewById(R.id.listView1); 
listata.setAdapter(adapter); 

Но у меня есть еще одно поле с именем ITEM_NUMBER. Я это поле Я хочу написать _ID номер

Как я могу это сделать?

new SimpleCursorAdapter(this, R.layout.item, constantsCursor, new String[] { **???** ,MYDBHelper.TITLE, MYDBHelper.VALUE }, new int[] {**R.id.item_number** , R.id.item_name, R.id.item_points }); 

Вот MYDBHelper

public class MYDBHelper extends SQLiteOpenHelper { 
    private static final String DATABASE_NAME = "db"; 
    static final String TITLE = "title"; 
    static final String VALUE = "value"; 

    public MYDBHelper(Context context) { 
     super(context, DATABASE_NAME, null, 1); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 

     db.execSQL("CREATE TABLE constants (_id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT, value TEXT);"); 
    } 



     @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     db.execSQL("DROP TABLE IF EXISTS constants"); 
     onCreate(db); 
    } 
} 

ответ

0

Просто сделать это:

ListAdapter adapter = new SimpleCursorAdapter(this, R.layout.item, constantsCursor, new String[] { DBHelperMen2.ID, DBHelperMen2.TITLE, DBHelperMen2.VALUE }, new int[] {R.id.item_number, R.id.item_name, R.id.item_points }); 

Где в DBHelperMen2.ID, то ID это имя столбца в БД

Этот код должен работать:

public class MYDBHelper extends SQLiteOpenHelper { 
private static final String DATABASE_NAME = "db"; 

static final String TABLE_NAME = "constants"; 
static final String ID = "_id"; 

static final String TITLE = "title"; 
static final String VALUE = "value"; 

public MYDBHelper(Context context) { 
    super(context, DATABASE_NAME, null, 1); 
} 

@Override 
public void onCreate(SQLiteDatabase db) { 

    db.execSQL("CREATE TABLE "+ TABLE_NAME + "(" + ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + TITLE + " TEXT, " + VALUE + " TEXT);"); 
} 



    @Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME); 
    onCreate(db); 
} 

}

+0

У меня нет ID поля в myDBHelper – Lukap

+0

Это всегда хорошая идея, чтобы объявить первичный ключ, как: _id INTEGER PRIMARY KEY Autoincrement –

+0

Где 'ID' поле вы хотите? Вы запрашиваете «SELECT _ID, title, value», поэтому _ID находится в вашем db –