2016-04-05 5 views
0

Я не уверен, что это правильный путь. Мне нужна помощь в решении этой проблемы. Я хочу выбрать номер из NumberPicker. После выбора я ожидаю, что setOnValueChangedListener сможет захватить значение и запустить цикл for и сохранить полученные значения в arraylist. Затем я хочу, чтобы значения цикла отображались в моем счетчике. Но я получаю сообщение об ошибке, говорящее «не может разрешить конструктор ArrayAdapter (....)» и когда я запустить приложение, я получаю сообщение об ошибке:Настройка значения счетчика в зависимости от выбранного номера?

"Error:(79, 58) error: no suitable constructor found for ArrayAdapter(,int,List) constructor ArrayAdapter.ArrayAdapter(Context,int,int,List) is not applicable (actual and formal argument lists differ in length) constructor ArrayAdapter.ArrayAdapter(Context,int,List) is not applicable (actual argument cannot be converted to Context by method invocation conversion) constructor ArrayAdapter.ArrayAdapter(Context,int,int,Object[]) is not applicable (actual and formal argument lists differ in length) constructor ArrayAdapter.ArrayAdapter(Context,int,Object[]) is not applicable (actual argument cannot be converted to Context by method invocation conversion) constructor ArrayAdapter.ArrayAdapter(Context,int,int) is not applicable (actual argument cannot be converted to Context by method invocation conversion) constructor ArrayAdapter.ArrayAdapter(Context,int) is not applicable (actual and formal argument lists differ in length)"

 @Override  
    protected void onCreate(Bundle savedInstanceState) {   

super.onCreate(savedInstanceState); 
      setContentView(R.layout.new_item); 
      final List<Integer> resultInteger = new ArrayList<Integer>(); // to store the integer value 

    final Spinner hourSpinner = (Spinner) findViewById(R.id.hourSpinner); 


    final NumberPicker HourPicker = (NumberPicker) findViewById(R.id.HourNumberPicker); 
    HourPicker.setMinValue(9); 
    HourPicker.setMaxValue(15); 
    HourPicker.setWrapSelectorWheel(false); 

    HourPicker.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() { 
     @Override 
     public void onValueChange(NumberPicker picker, int oldVal, int newVal) { 

      Integer value = HourPicker.getValue(); 

      for (int index = 0; index == value; index++) 
      { 
       resultInteger.add(index); 
      } 

      ArrayAdapter<CharSequence> hourAdapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, resultInteger); 
      hourAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
      hourSpinner.setAdapter(hourAdapter); 
    } 
    }); 
} 

Спасибо.

+0

Изменить ArrayAdapter к "ArrayAdapter " –

+0

Спасибо. Теперь он работает нормально, но у меня есть некоторые проблемы с циклом for, поскольку ничего не отображается в моем spinner @Ram – topacoBoy

+0

Почему это для цикла требуется? просто добавьте значение в список resultInteger. –

ответ

1

переход от this к YourActivity.this

new ArrayAdapter(this, ...) 

в

new ArrayAdapter<Integer>(YourActivity.this, ...) 

проверки этого кода.

hourPicker.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() { 
     @Override 
     public void onValueChange(NumberPicker picker, int oldVal, int newVal) { 
      Integer value = hourPicker.getValue(); 

      resultInteger.clear(); 
      for (int index = 0; index < value; index++) { 
       resultInteger.add(index); 
      } 

      ArrayAdapter<Integer> hourAdapter = new ArrayAdapter<>(YourActivity.this, android.R.layout.simple_spinner_item, resultInteger); 
      hourAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
      hourSpinner.setAdapter(hourAdapter); 
     } 
    }); 
+0

Он работает, но цикл for не работает. Есть что-то, чего я не хватает? – topacoBoy

+0

проверка @ комментарий Ram. – myoungjin

+0

все еще не работает @dkb – topacoBoy

0

@topacoboy on scroll вы хотите добавить число в spinner? попробуйте следующий код.

HourPicker = (NumberPicker) findViewById(R.id.numberPicker); 
    HourPicker.setMinValue(9); 
    HourPicker.setMaxValue(15); 
    HourPicker.setWrapSelectorWheel(false); 
    resultInteger = new ArrayList<Integer>(); 
    HourPicker.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() { 
     @Override 
     public void onValueChange(NumberPicker picker, int oldVal, int newVal) { 

      Integer value = HourPicker.getValue(); 

      // for (int index = 0; index == value; index++) { 
       resultInteger.add(value); 
      //} 

      ArrayAdapter<Integer> hourAdapter = new ArrayAdapter(MainActivity.this, android.R.layout.simple_spinner_item, resultInteger); 
      hourAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
      hourSpinner.setAdapter(hourAdapter); 
     } 
    }); 
+0

yess. Любые решения для этого? – topacoBoy

+0

Снимите петлю. добавьте прямо перед добавлением в список массивов, проверьте этот номер list.contain(), если номер присутствует, а затем не добавляйте. –

+0

Я хотел, чтобы он закодировал значение, выбранное пользователем, и отобразил его, поэтому мне нужен цикл for. Во всяком случае, я получил исправление. Спасибо за помощь человеку @RahulWadhai – topacoBoy

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