1

私の Android アプリでは、Spinners のレイアウトを作成しています。私がやりたいことは、最初のスピナーから選択したアイテムを与え、2 番目のスピナーを埋めることです。

最初のスピナーは、次のようにカーソル (データベース クエリの結果) から埋められます。

Spinner combo1 = (Spinner) findViewById(R.id.combo1);
mDbH.open();
Cursor c1 = null;
c1 = mDbH.consulta4();
startManagingCursor(c1);
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,android.R.layout.simple_spinner_item,c1,new String[] {"nombre"},new int[] {android.R.id.text1});
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
combo1.setAdapter(adapter);

これはうまくいきます!問題は私のイベントリスナーの中にあります:

combo1.setOnItemSelectedListener(new OnItemSelectedListener(){
    public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
        String est = String.valueOf(combo1.getSelectedItem());
        int idEst = (int) id;
        Log.e("est",est);
        Log.e("idEst",""+idEst);
        mDbH.open();
        Cursor c = null;
        c = mDbH.consulta5(idEst,est);
        SimpleCursorAdapter adapter2 = new SimpleCursorAdapter(getApplicationContext(),android.R.layout.simple_spinner_item,c,new String[] {"nombre"},new int[] {android.R.id.text1});
        adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        combo1.setAdapter(adapter2);
    }

    public void onNothingSelected(AdapterView<?> arg0) {}

});

なぜなら、LogCat には Log.e("est",est); という行があるからです。これを示します:

10-25 09:48:50.390: E/est(3462): android.database.sqlite.SQLiteCursor@40625638

そしてもちろん、その値は私のデータベースにはなく、2 番目のカーソルは空で、スピナーには何も入力されません!! それで、これは私の質問です。データベースからいっぱいになったときに、スピナーで選択されたアイテムをどのように取得しますか? 私も試しました:

String est = combo1.getSelectedItem().toString();

String est = parentView.getItemAtPosition(position).toString();

しかし、結果は同じです!! 私は何か間違ったことをしていますか?助けてください!

ありがとう!

4

1 に答える 1

3

あなたSpinnerは を使用して記入されたのでSimpleCursorAdaptergetItemAtPosition&は参照getSelectedItemを返しCursorます。使用する:

Cursor c=(Cursor) combo1.getSelectedItem();
String est=c.getString(c.getColumnIndex("nombre");

同じ作品getItemAtPosition(position)

于 2012-10-25T14:42:40.133 に答える