-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 に答える