2017-01-25 2 views
0

Я действительно не знал, как это сделать. В принципе у меня есть этот метод:обновить и изменить раскладку на кнопке 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 в качестве аргумента, поэтому я получаю различное количество элементов для счетчика.

То, как я пробовал, это видно выше. Ничего не происходит, когда я нажимаю флажок, я вижу, что в журнале он всегда записывает «да», даже если флажок никогда не проверяется явно.

любая помощь будет оценена,

благодаря

+0

Вы не меняете CheckBox или Spinner, поэтому не извлекайте их в этом методе, не принимайте их (нажмите кнопку прослушивания) обратно в метод onCreate(). Просто создайте новый адаптер в uploadFile() и установите адаптер. – user388229

ответ

0

жаль, он работает так же, как и ожидалось, он просто не обновляет флажок, потому что я не говорю это, чтобы сделать это.

Смежные вопросы