0

ユーザーから銀行名と口座番号を取得するアクティビティがあります。銀行名と対応する口座番号がデータベースに保存されます。現在、別のアクティビティに 2 つのスピナーがあり、そのうちの 1 つは銀行名を取得してそれ自体に入力し、もう 1 つはその銀行に対応する口座番号を取得します。私が抱えている唯一の問題は、最初のスピナー(銀行名を保持している)のエントリをクリックできないため、2番目のスピナーも役に立たなくなることです。その理由は何でしょうか。スピナーのコードは次のとおりです。

   // in onCreate() function
   // for the spinner holding bank name
    Cursor cursor = myDatabase.getData();
    cursor.moveToFirst();
    myAdapter = new SimpleCursorAdapter(AddTransaction.this,
                R.layout.spinnerlayout, cursor,
                new String[] { DatabaseClass.KEY_BANK_NAME_ID },
                new int[] { R.id.bankName },
                SimpleCursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
    mySpinner.setAdapter(myAdapter);

    get_datafrom_spinner = cursor.getString(cursor
                .getColumnIndex(DatabaseClass.KEY_BANK_NAME_ID));
        // Toast.makeText(AddTransaction.this, get_datafrom_spinner,
        // Toast.LENGTH_LONG).show();

        // mySpinner.setOnItemSelectedListener(this);

    myDatabase.close();



@Override
public void onItemSelected(AdapterView<?> arg0, View arg1, int position,
        long arg3) {
    // TODO Auto-generated method stub
    try {
        myDatabase.open();

        int pos = position;
        Cursor cursor = (Cursor) myAdapter.getItem(pos);
        bank_name = cursor.getString(cursor // name of the bank
                                            // selected
                .getColumnIndex(DatabaseClass.KEY_BANK_NAME_ID));
        myAdapter = new SimpleCursorAdapter(AddTransaction.this,
                R.layout.spinnerlayout, cursor,
                new String[] { DatabaseClass.KEY_BANK_NAME_ID, },
                new int[] { R.id.bankName },
                SimpleCursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
        mySpinner.setAdapter(myAdapter);

        // Toast.makeText(AddTransaction.this, s,
        // Toast.LENGTH_SHORT).show();

        // returns the account numbers corresponding to this bank name
        Cursor c = myDatabase.getAccountData(bank_name);
        c.moveToFirst();

        myAdapter_for_account = new SimpleCursorAdapter(
                AddTransaction.this, R.layout.account_number_spinner, c,
                new String[] { DatabaseClass.KEY_ACCOUNT_NUMBER_ID },
                new int[] { R.id.accNum },
                SimpleCursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);

        mySpinner_for_account.setAdapter(myAdapter_for_account);

        // position of the the clicked in the spinner for account
        int position_account = mySpinner_for_account
                .getSelectedItemPosition();

        Cursor cursor2 = (Cursor) myAdapter_for_account
                .getItem(position_account);

        // holds the account number for the spinner item selected
        account_number_selected = cursor2.getString(cursor2
                .getColumnIndex(DatabaseClass.KEY_ACCOUNT_NUMBER_ID));

        // Toast.makeText(AddTransaction.this, account_number_selected,
        // Toast.LENGTH_LONG).show();
        Cursor balance = myDatabase
                .getAmountfor_Account(account_number_selected);
        balance.moveToFirst();

        /*
         * c = myDatabase.getAmountfor_Account(account_for_spiiner_account);
         * c.moveToFirst();
         */

        // get the balance as a string

        balance_in_account = balance.getString(balance // <--
                .getColumnIndex(DatabaseClass.KEY_CURRENT_BALANCE_ID));

        // Toast.makeText(AddTransaction.this, balance_in_account,
        // Toast.LENGTH_SHORT).show();

    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    myDatabase.close();

}
4

2 に答える 2

0
Spinner s = (Spinner) findViewById(R.id.spinner_id);
s.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener(){

@Override
public void onItemSelected(AdapterView adapter, View v, int i, long lng) {
//do something here
}

@Override
public void onNothingSelected(AdapterView arg0) {
//do something else
}
});
于 2012-10-12T11:04:11.410 に答える
0

最終的に機能するようになりました。問題は、同じ onItemSelected() 関数で 2 つのスピナーを宣言していたことでした。各スピナーには、独自の onItemSelected 関数が必要です。

于 2012-10-17T13:28:49.807 に答える