2017-10-06 85 views
-1

我正在开发电子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和Loop之间有什么关系,你可以去相关的XML检查ID ... –

回答

1

首先,你需要OnItemSelectListener的同一个实例设置为你的所有心思。让你的活动或片段实现OnItemSelectListener然后调用spinner.setOnItemSelectListener(this);

onItemSelected方法,你可以运行这段代码有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); 
     } 
    } 

好运

埃姆雷

+0

看起来像优雅的解决方案..让我试试 –

+0

完美谢谢 –

+1

您的欢迎:) –