Ваш код работает, как только действие создано. Это означает, что он получает положение счетчика, как только он сделан, который всегда будет нулевым. Этот код больше не будет запускаться, чтобы дать вам другое значение. Вам необходимо настроить OnItemSelectedListener
, чтобы значение менялось при каждом изменении положения счетчика.
private AdapterView.OnItemSelectedListener spinnerListener =
new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
// Called anytime a spinner dropdown item is clicked
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
};
Тогда в вашем onCreate()
методе напишите это:
sp1.setOnItemSelectedListener(spinnerListener);
Это относится только к sp1, но если вы установили все счетчики с этим же слушателем, знайте, что параметр parent
в слушателе - это изменившийся счетчик. Если вам необходимо узнать, какой спиннер был заменен, используйте методы setTag()
и getTag()
.
В onCreate()
:
sp1.setTag("sp1");
sp2.setTag("sp2");
// set Listeners, etc
В вашем onItemSelected()
if (parent.getTag().equals("sp1")) //It was sp1 that changed
// do stuff
else if (parent.getTag().equals("sp2")) //sp2 changed
// do other stuff
РЕДАКТИРОВАТЬ: В соответствии с вашим запросом, здесь комбинация выше:
// Previous declarations
int ssp1;
double sumRes=0,sumPoints=0;
double fail=0;
Spinner sp1,sp2,sp3,sp4,sp5,sp6,sp7,sp8,sp9;
ArrayAdapter<CharSequence> adapter;
private AdapterView.OnItemSelectedListener spinnerListener =
new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
int position = parent.getSelectedItemPosition(); // also equal to the parameter position
if (parent.getTag().equals("sp1")) // sp1 was changed this time
// Change rcvdGrade[0] as you please
else if (parent.getTag().equals("sp2")) // sp2 changed
// Change rcvdGrade[1] as you please
else if (parent.getTag().equals("sp3")) //etc
//etc
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// This is required to make the listener happy, but leave it blank
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sp1 = findViewById(R.id.sp1);
sp2 = findViewById(R.id.sp2);
sp3 = findViewById(R.id.sp3);
// others set, adapters set, etc
sp1.setTag("sp1");
sp2.setTag("sp2");
sp3.setTag("sp3");
// etc
sp1.setOnItemSelectedListener(spinnerListener);
sp2.setOnItemSelectedListener(spinnerListener);
sp3.setOnItemSelectedListener(spinnerListener);
// etc
}
Я здесь не для того, чтобы писать весь ваш код, но я надеюсь, что это поможет вам лучше понять это. Если нет, пожалуйста, посмотрите учебники для OnItemSelectedListener
, потому что это то, что вы хотите лучше всего работать с блеснами. Если вы уверены, что хотите использовать OnClickListener
, установите вместо этого кнопку.