创建动态微调器并获取每个微调器的价值,每当微调器项目发生变化时,获取所有微调器值

Creating dynamic spinners and getting value of every spinner, Whenever a spinner item changed, get all spinner values

我正在开发电子商务应用程序。我正在尝试创建动态微调器。 Spinner 取决于产品属性。我能够创建微调器并将数据映射到它们上,但我希望在微调器更改其数据时让所有微调器选择项目,以便我可以匹配正确的产品变体。

这是我的代码片段

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

        }

首先,您需要为所有微调器设置相同的 OnItemSelectListener 实例。让您的 activity 或片段实现 OnItemSelectListener 然后调用 spinner.setOnItemSelectListener(this);

onItemSelected方法中你可以运行这个代码有选择。

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

祝你好运

埃姆雷