Я действительно не знал, как это сделать. В принципе у меня есть этот метод:обновить и изменить раскладку на кнопке checkbox
private void uploadFile(int maxSpinner) {
setContentView(R.layout.upload);
CheckBox local = (CheckBox) findViewById(R.id.local_checkbox);
Spinner dropdown = (Spinner)findViewById(R.id.spinner1);
local.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
checkbox = isChecked;
if(isChecked){
uploadFile(6);
Log.i("checked", "yes");
}
else {
uploadFile(5);
Log.i("checked", "no");
}
}
});
ArrayList<String> categories = new ArrayList<>();
for(int category = 1; category <= maxSpinner+1; category++){
categories.add(Integer.toString(category));
}
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_dropdown_item, categories);
dropdown.setAdapter(adapter);
dropdown.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
category = arg2+1;
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
}
Соответствующий файл макета имеет флажок и кок.
maxSpinner
- предел для цикла for, который устанавливает количество элементов Spinner. Я хочу изменить maxSpinner
в зависимости от того, выбран флажок или нет.
Итак, в начале uploadFile()
в качестве аргумента вызывается в другом месте с 5. Когда я нажимаю на флажке local
, я хочу позвонить uploadFile
еще раз, но на этот раз с 6
или снова 5
в качестве аргумента, поэтому я получаю различное количество элементов для счетчика.
То, как я пробовал, это видно выше. Ничего не происходит, когда я нажимаю флажок, я вижу, что в журнале он всегда записывает «да», даже если флажок никогда не проверяется явно.
любая помощь будет оценена,
благодаря
Вы не меняете CheckBox или Spinner, поэтому не извлекайте их в этом методе, не принимайте их (нажмите кнопку прослушивания) обратно в метод onCreate(). Просто создайте новый адаптер в uploadFile() и установите адаптер. – user388229