2017-02-09 2 views
0

私はスピナーを含むCardViewを持っています。スピナーには、ユーザーが選択できる0〜5の数字が入ります。各CardView自体には固有のIDが関連付けられています。例えば、今は2枚のカード、IDが1のカードA、IDが2のカードBがあるとします。スピナーから選択した値に応じて配列を作成します。たとえば、カードAの値が3、カードBの値が2の場合、最終的な配列は[1,1,1,2,2]のようになり、カードAの値のスピナーが0に変更されると、配列は[2,2]に更新されます。 私は今、各カードごとに分離配列を作成することができますが、私は一緒に配列を追加する方法がわからないですか、私が今持っているどのような各スピナーにおける最終的な値CardViewのスピナーから取得した複数の値を合計します。

に基づいて配列を更新:

@Override 
public void onBindViewHolder(ViewHolder holder, final int position) { 

    final ChooseServiceList chooseServiceList1 = chooseServiceList.get(position); 

    // Spinner Drop down elements 
    List<Integer> categories = new ArrayList<Integer>(); 
    categories.add(0); 
    categories.add(1); 
    categories.add(2); 
    categories.add(3); 
    categories.add(4); 
    categories.add(5); 

    ArrayAdapter<Integer> dataAdapter = new ArrayAdapter<Integer>(context, android.R.layout.simple_spinner_item, categories); 
    dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    holder.spinnerServiceNum.setAdapter(dataAdapter); 

    holder.spinnerServiceNum.setOnItemSelectedListener(new Spinner.OnItemSelectedListener() { 
     @Override 
     public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) { 
      String item = adapterView.getItemAtPosition(i).toString(); 
      Integer serviceCount = Integer.parseInt(item);//spinner value 
      Integer serviceId = chooseServiceList1.getServiceId();//ID associated with card 
      List<Integer> list = new ArrayList<Integer>(); 
      for(int service = 1; service<=serviceCount; service++) { 
       list.add(serviceId); 
       if(service == serviceCount){ 
        //final numbers of each ID that should be add into array 
       } 
      } 
     } 

     @Override 
     public void onNothingSelected(AdapterView<?> adapterView) { 
      //do nothing 
     } 
    }); 
} 

私は別の配列を今すぐ印刷することができます。 [1,1,1]、[2,2]ですが、スピナーが選択された後、どのように更新して組み合わせるべきですか?私はそれらを共通の環境設定に入れようとしましたが、これは最終的な配列[2,2]だけを共有環境設定にします。

答えて

0

リスト定義を最終的にして、それを外側のクラスに移動します。だから... ...

List<Integer> list = new ArrayList<Integer>(); 

をこの行を削除し、代わりに、あなたのコードの先頭に、書き込み...

final ChooseServiceList chooseServiceList1 = chooseServiceList.get(position); 
final List<Integer> list = new ArrayList<Integer>(); 
関連する問題