Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 根据先前选择的值将数据加载到微调器链_Android_Json_Android Spinner - Fatal编程技术网

Android 根据先前选择的值将数据加载到微调器链

Android 根据先前选择的值将数据加载到微调器链,android,json,android-spinner,Android,Json,Android Spinner,我的活动中有3个微调器,我正在从json响应加载这3个微调器的数据 第1个SpinnerCastp直接从json响应获取数据。 第二个微调器的SizeSP数据取决于从第一个微调器和 第三个微调器的extraDescriptionOneSP数据取决于从第二个微调器中选择的内容 我的问题是,它在第二个SP中崩溃,因为我没有选择任何值,当活动开始时,我在代码中以注释的形式显示该值,我如何克服它?我应该把那段代码放在哪里。当我硬编码sizeSp的位置时,它不会崩溃 crust = Utils.remov

我的活动中有3个微调器,我正在从json响应加载这3个微调器的数据

第1个SpinnerCastp直接从json响应获取数据。 第二个微调器的SizeSP数据取决于从第一个微调器和 第三个微调器的extraDescriptionOneSP数据取决于从第二个微调器中选择的内容

我的问题是,它在第二个SP中崩溃,因为我没有选择任何值,当活动开始时,我在代码中以注释的形式显示该值,我如何克服它?我应该把那段代码放在哪里。当我硬编码sizeSp的位置时,它不会崩溃

crust = Utils.removeDuplicatesFromList(crust);
            ArrayAdapter<String> dataAdapterCru = new ArrayAdapter<String>(
                    this, android.R.layout.simple_spinner_item, crust);
            dataAdapterCru
                    .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            crustSP.setAdapter(dataAdapterCru);

            crustSP.setOnItemSelectedListener(new MyOnItemSelectedListener(
                    ActivityPizzaCustomize.this) {

                public void onNothingSelected(AdapterView<?> arg0) {
                }

                @Override
                public void onItemSelected(AdapterView<?> parent,
                        View view, int position, long id) {

                    String crustSelectedItem = crustSP.getSelectedItem()
                            .toString();

                    List<String> resultDescription = getFilteredDescriptions(
                            crustSelectedItem, sizeDescription);
                    sizeSP.setOnItemSelectedListener(new MyOnItemSelectedListener(
                            ActivityPizzaCustomize.this) {

                        public void onNothingSelected(AdapterView<?> arg0) {
                        }

                        @Override
                        public void onItemSelected(AdapterView<?> parent,
                                View view, int position, long id) {

                            String sizeSelectedItem = sizeSP
                                    .getSelectedItem().toString(); // it crashes here since I haven't selected any value

                            List<String> resultTopping = getFilteredToppings(
                                    sizeSelectedItem, topDescription);

                            extraDescriptionOneSP
                                    .setOnItemSelectedListener(new MyOnItemSelectedListener(
                                            ActivityPizzaCustomize.this));
                            ArrayAdapter<String> dataAdapterExtraDesOne = new ArrayAdapter<String>(
                                    ActivityPizzaCustomize.this,
                                    android.R.layout.simple_spinner_item,
                                    resultTopping);
                            dataAdapterExtraDesOne
                                    .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                            extraDescriptionOneSP
                                    .setAdapter(dataAdapterExtraDesOne);
                            extraDescriptionOneSP
                                    .setAdapter(new NothingSelectedSpinnerAdapter(
                                            dataAdapterExtraDesOne,
                                            R.layout.contact_spinner_row_nothing_selected,
                                            ActivityPizzaCustomize.this));
                        }

                    });

                    ArrayAdapter<String> dataAdapterDes = new ArrayAdapter<String>(
                            ActivityPizzaCustomize.this,
                            android.R.layout.simple_spinner_item,
                            resultDescription);
                    dataAdapterDes
                            .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                    sizeSP.setAdapter(dataAdapterDes);
                    sizeSP.setAdapter(new NothingSelectedSpinnerAdapter(
                            dataAdapterDes,
                            R.layout.contact_spinner_row_nothing_selected,
                            ActivityPizzaCustomize.this));
                }
            });
这就是我筛选项目的方式

List<String> getFilteredDescriptions(String crustSelectedItem,
            List<String> sizeDescription) {
        List<String> resultDescription = new ArrayList<String>();
        crustSelectedItem = crustSP.getSelectedItem().toString();

        if (sizeDescription == null || sizeDescription.isEmpty())
            return resultDescription;

        for (int i = 0; i < sizeDescription.size(); i++) {
            sizeDescription = Utils.removeDuplicatesFromList(sizeDescription);
            if (!sizeDescription.get(i).contains(crustSelectedItem))
                continue;

            resultDescription.add(sizeDescription.get(i));
        }

        return resultDescription;
    }

    List<String> getFilteredToppings(String sizeSelectedItem,
            List<String> topDescription) {
        List<String> resultTopping = new ArrayList<String>();
        sizeSelectedItem = sizeSP.getSelectedItem().toString();

        if (topDescription == null || topDescription.isEmpty())
            return resultTopping;

        for (int i = 0; i < topDescription.size(); i++) {
            topDescription = Utils.removeDuplicatesFromList(topDescription);
            if (!topDescription.get(i).contains(sizeSelectedItem))
                continue;

            resultTopping.add(topDescription.get(i));
        }

        return resultTopping;
    }

您必须在另一个列表中调用onItemSelectedListner,例如

    spinner1.setOnItemSelectedListener(new OnItemSelectedListener() {

                @Override
                public void onItemSelected(AdapterView<?> parent, View view,
                        int position, long id) {
                    // TODO Auto-generated method stub

                         Arraylist2.add((String)spinner1.getItemAtPosition(position));

//Some Code/Ligic here
                    spinner2.setOnItemSelectedListener(new OnItemSelectedListener() {

                        @Override
                        public void onItemSelected(AdapterView<?> parent,
                                View view, int position2, long id) {
                            // TODO Auto-generated method stub
                            Arraylist3.add((String) spinner2.getItemAtPosition(position2));

                        }

                        @Override
                        public void onNothingSelected(AdapterView<?> parent) {
                            // TODO Auto-generated method stub111

                        }
                    });

                }

                @Override
                public void onNothingSelected(AdapterView<?> parent) {
                    // TODO Auto-generated method stub

                }
            });
希望它能帮上忙……

试试看。。 将此代码放在设置onItemSelectedListner之前

spin1.setSelection(0, false);

我想不出你的代码和我的代码有什么区别。你能辨认出这个差异吗。如果你能告诉我对不起,我现在就试过了。。这对我来说很管用。。你能提供logcat错误吗。。?你所犯错误的性质是什么。。?