如何使用数据库信息填充微调器

时间:2012-04-26 13:45:26

标签: java android android-spinner sqliteopenhelper

我有一个微调器,我需要填充数据库中的信息,但我发现的示例不起作用。

这是我的代码:

public void consulta() {
    AdminSQLiteOpenHelper admin = 
        new AdminSQLiteOpenHelper(this, "administracion", null, 1);
    SQLiteDatabase bd=admin.getWritableDatabase();

    Cursor c = bd.rawQuery("select name  from category",null);

    startManagingCursor(c);

    // create an array to specify which fields we want to display
    String[] from = new String[]{"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
    spinner1.setAdapter(adapter);

    bd.close();
}

2 个答案:

答案 0 :(得分:1)

我就是这样做的:

db = SQLiteDatabase.openDatabase("/data/data/packagename/databases/mydata.db", null, SQLiteDatabase.OPEN_READONLY);
Cursor c_cat = db.rawQuery("select _id, column_desc from your_table", null);
startManagingCursor(c_cat);
spinner = (Spinner) findViewById(R.id.spinnername);
String[] from = new String[]{"column_desc"};
int[] to = new int[]{android.R.id.text1};
SimpleCursorAdapter mAdapter = new SimpleCursorAdapter(this, android.R.layout.simple_spinner_item, c_cat, from, to);
mAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(mAdapter);
db.close();

我在onCreate中完成了所有这些。我在方法之外声明了所有变量,以便它们对整个类都公开。我在过去犯了一个错误就是在填充微调器后关闭光标。如果要在微调器中查看数据,光标必须保持打开状态。

我希望这能为你解决。

编辑:我注意到你没有在rawQuery中查询_id。如果要填充微调器,则必须包含该值。分析我提供的代码。

答案 1 :(得分:0)

假设您没有留下任何代码,您需要找到/定义spinner1,以便框架知道从适配器放置信息的位置。

private Spinner spinner1;

spinner1 = (Spinner) view.findViewById(R.id.yourspinnerid);

// rest of your code