我有一个活动,它接受来自用户的银行名称和账号。银行名称和相应的账号存储在数据库中。现在在另一个活动中有两个微调器,其中一个获取银行名称并填充它们,另一个获取与该银行相对应的帐号。我成功地填充了spinners.The,唯一的问题是,第一个旋转器中的条目(包含银行名称)是不可点击的,因此第二个旋转器也变得无用。我不能理解这是什么原因。以下是微调器的代码:
// 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();
}发布于 2012-10-12 19:04:11
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-17 21:28:50
最后让它工作了,问题是我在同一个onItemSelected()函数中声明了两个微调器,每个微调器都应该有自己的onItemSelected函数来工作。
https://stackoverflow.com/questions/12857582
复制相似问题