-1

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

这是我的代码:

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

2 回答 2

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。如果您希望填充微调器,则必须包括它。分析我提供的代码。

于 2012-04-26T14:44:50.850 回答
0

假设您没有遗漏任何代码,您需要找到/定义 spinner1,以便框架知道将您的信息从适配器放在哪里。

private Spinner spinner1;

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

// rest of your code
于 2012-04-26T14:02:33.683 回答