2017-10-06 1 views
-1

Je développe une application e-com. J'essaie de créer un spinner dynamique. Spinner dépend des attributs du produit. Je suis en mesure de créer des fileurs également mappés des données sur eux, mais je veux que tous les fileurs sélectionnés élément chaque fois qu'un spinner change ses données afin que je puisse correspondre à la variante correcte du produit.Création de spinners dynamiques et obtention de la valeur de chaque spinner, Chaque fois qu'un élément spinner a changé, obtenir toutes les valeurs de spinner

Voici mon extrait de code

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

Pourquoi avez-vous utilisé OnItemSelectedListener en boucle? –

+0

je ne connais pas l'ID de spinner .. –

+0

Quelle est la relation entre ID et Loop et vous pouvez simplement aller à l'xml pour vérifier l'ID ... –

Répondre

1

D'abord, vous devez définir même instance de OnItemSelectListener à vos tous filateurs. Laissez votre activité ou d'un fragment de mettre en œuvre OnItemSelectListener puis appelez spinner.setOnItemSelectListener(this);

Dans onItemSelected méthode vous pouvez exécuter ce code pour avoir selecteds.

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

Bonne chance

Emre

+0

ressemble à une solution élégante .. laissez-moi essayer –

+0

Fonctionne parfaitement grâce –

+1

Votre bienvenue :) –