0

これが正しい方法かどうかわかりません。この問題を解決するには助けが必要です。NumberPicker から数字を選択したいです。選択後、setOnValueChangedListener が値を取得して for ループを実行し、結果の値を arraylist に格納できることを期待しています。次に、ループ値をスピナーに表示します。しかし、「コンストラクターArrayAdapter(....)を解決できません」というエラーメッセージが表示され、アプリを実行すると、次のエラーメッセージが表示されます:

「エラー:(79, 58) エラー: ArrayAdapter(,int,List) コンストラクター ArrayAdapter.ArrayAdapter(Context,int,int,List) に適したコンストラクターが見つかりませんでした (実際の引数リストと仮引数リストの長さが異なります) コンストラクター ArrayAdapter .ArrayAdapter(Context,int,List) は適用されません (メソッド呼び出し変換によって実引数を Context に変換することはできません) コンストラクター ArrayAdapter.ArrayAdapter(Context,int,int,Object[]) は適用されません (実引数リストと仮引数リストが異なります)長さ) コンストラクター ArrayAdapter.ArrayAdapter(Context,int,Object[]) は適用されません (メソッド呼び出し変換によって実際の引数を Context に変換することはできません) コンストラクター ArrayAdapter.ArrayAdapter(Context,int,int) は適用されません (メソッド呼び出し変換によって実引数を Context に変換することはできません) コンストラクター ArrayAdapter.ArrayAdapter(Context,int) は適用されません (実引数リストと仮引数リストの長さが異なります)"

      @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);
    }
    });
}

ありがとうございました。

4

2 に答える 2

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);
        }
    });
于 2016-04-05T04:55:24.103 に答える