这可能是没有_id列的Bind Spinner吗?

时间:2013-11-29 17:16:52

标签: android

public void DatabaseConn() {
    DataBaseHelper myDbHelper = new DataBaseHelper(this.getApplicationContext());
    myDbHelper = new DataBaseHelper(this);
    try { 
        myDbHelper.createDataBase();  
    } catch (IOException ioe) { 
        throw new Error("Unable to create database"); 
    }  
    try {  
        myDbHelper.openDataBase();         
    }catch(SQLException sqle){  
        throw sqle;  
    }

    SQLiteDatabase db = myDbHelper.getReadableDatabase();
    //SQLiteDatabase db =     SQLiteDatabase.openDatabase("/data/data/com.example.abc2/databases/DB_BusData", null, 0);
    Cursor c = db.rawQuery("SELECT * FROM Tbl_Driver", null);
    startManagingCursor(c);
    //create an array to specify which fields we want to display
    String[] from = new String[]{"Driver_Name"};
    //create an array of the display item we want to bind our data to
    int[] to = new int[]{android.R.id.text1};
    //create simple cursor adapter
    SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, android.R.layout.simple_spinner_item, c, from, to );
    adapter.setDropDownViewResource( android.R.layout.simple_spinner_dropdown_item );
    //get reference to our spinner
    Spinner s = (Spinner) findViewById( R.id.DriverSpin);
    s.setAdapter(adapter);

    db.close();
}

这可能是没有_id列的Bind Spinner吗?任何想法?

编辑:除SimpleCursorAdapter以外,其他任何适配器都可以执行此操作吗?我的意思是没有_id

1 个答案:

答案 0 :(得分:0)

来自您CursorAdapter的超级SimpleCursorAdapter的{​​{3}}:

Cursor必须包含名为“_id”的列,否则此类将无效。

所以,没有。

编辑:

实际上,有一种方法可以解决这个问题。如果您仔细阅读,它会说 Cursor 必须有一个名为_id的列,我们可以通过将您的查询字符串更改为:

"SELECT ROWID AS _id, someColumn, anotherColumn FROM Tbl_Driver"

您必须手动输入所需的所有列,因为执行ROWID AS _id将无法与使用通配符*同时工作。