2017-10-06 1 views
-1

私はe-comアプリケーションを開発しています。ダイナミックスピナーを作成しようとしています。スピナーは製品属性に依存します。私はスピナーを作成することもできますが、スピンナーがそのデータを変更するたびにすべてのスピナーを選択して、正しい製品にマッチさせることができます。ダイナミックスピナーの作成とすべてのスピナーの価値の取得スピナー項目が変更されたときは、すべてのスピナー値を取得します

はここに私のコードスニペット

final List<Attribute> attributes = product_.getAttributes(); 
     for (i = 0; i < attributes.size(); i++) { 
      ArrayList<String> spinnerArray = (ArrayList<String>) attributes.get(i).getOptions(); 
      ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_dropdown_item, spinnerArray); 
      Spinner spinner = new Spinner(getActivity()); 
      spinner.setAdapter(spinnerArrayAdapter); 
      spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
       @Override 
       public void onItemSelected(AdapterView<?> adapterView, View view, int position, long l) { 

       } 
       @Override 
       public void onNothingSelected(AdapterView<?> adapterView) { 
       } 
      }); 
      dynamicProductProperties.addView(spinner); 

     } 
+1

なぜあなたはループ内でOnItemSelectedListener使用しましたか? –

+0

私はスピナーのIDを知りません。 –

+0

IDとループの関係は何ですか?関連するXMLに移動してIDを確認することができます。 –

答えて

1

まず、あなたがあなたのすべてのスピナーにOnItemSelectListenerの同じインスタンスを設定する必要があります。あなたの活動やフラグメントがOnItemSelectListenerは、あなたがselectedsを持つようにこのコードを実行することができます方法をonItemSelected spinner.setOnItemSelectListener(this);

を呼んで実装してみましょう。

ArrayList<String> selectedList = new ArrayList(); 

    for (int i = 0; i < dynamicProductProperties.getChildCount(); i++) { 
     View view = dynamicProductProperties.getChildAt(i); 
     if (view instanceof Spinner){ 
      String selected = (String) ((Spinner) view).getSelectedItem(); 
      selectedList.add(TextUtils.isEmpty(selected) ? "" : selected); 
     } 
    } 

幸運

エムレ

+0

エレガントなソリューションのように見えます。私を試してみましょう –

+0

完璧に感謝します。 –

+1

あなたの歓迎:) –

関連する問題