Android 微调器中的项目选择不为';在MyOnItemSelectedListener中检测不到

Android 微调器中的项目选择不为';在MyOnItemSelectedListener中检测不到,android,android-spinner,Android,Android Spinner,我有3个微调器的活动,第一个微调器的选择与第二个相关,第二个选择与第三个相关,所以我在一个微调器中有一个微调器代码。 crapsp、SizeSp和extracdescriptiononesp是我拥有的3个微调器。我已经将项目加载到微调器,并且我还可以选择一个值。但我的问题是,每当我在CRASTSP中进行选择时,SizeSp都不会显示在MyOnItemSelectedListener()。但如果我在ExtraDescriptionNesp中进行选择,它会显示在MyOnItemSelectedLis

我有3个微调器的活动,第一个微调器的选择与第二个相关,第二个选择与第三个相关,所以我在一个微调器中有一个微调器代码。
crapsp、SizeSp和extracdescriptiononesp
是我拥有的3个微调器。我已经将项目加载到微调器,并且我还可以选择一个值。但我的问题是,每当我在CRASTSP中进行选择时,SizeSp都不会显示在
MyOnItemSelectedListener()。
但如果我在
ExtraDescriptionNesp
中进行选择,它会显示在
MyOnItemSelectedListener()

我不知道我哪里出了错,任何人都可以指出我哪里出了错,这将非常有帮助

这就是代码

            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> resultSizes = getFilteredSizes(crustSelectedItem);

                    ArrayAdapter<String> dataAdapterDes = new ArrayAdapter<String>(
                            ActivityPizzaCustomize.this,
                            android.R.layout.simple_spinner_item,
                            resultSizes);
                    dataAdapterDes
                            .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                    sizeSP.setAdapter(dataAdapterDes);

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

                            List<String> resultTopping = getFilteredToppings(sizeSelectedItem);

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

                        }

                    });

                }
            });

我看不到您使用所选位置来确定下一个微调器的数据。顺便说一句,您不应该为每个选择创建新的适配器,而应该重用曾经创建的适配器。

List resultSizes=getFilteredSizes(CRASTSelectedItem);该行执行过滤并返回所需内容。我有一个问题,为什么MyOnItemSelectedListener没有检测到Cristsp和SizeSpI的选择,我提到了在方法onItemSelected中获得的“位置”。在不使用“位置”值的情况下,您如何确定要使用哪些数据?请检查我更新的问题,此代码适用于第三喷丝器,但不适用于第一喷丝器和第二喷丝器。我不知道您为什么要使事情变得如此复杂。我认为问题在于,您正在重写onItemSelectedListener,而没有调用super方法。这是我的第一个android项目,非常困难。你介意帮我把这件事做好吗?
    Activity activity;
    String StrOneSPPosition;

    public MyOnItemSelectedListener(Activity p_activity) {
        activity = p_activity;
    }

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

        // check which spinner triggered the listener
        switch (parent.getId()) {

        case R.id.sp_crust: {

            String StrCrustSPPosition = String.valueOf(crustSP
                    .getSelectedItemPosition());
            System.out.println("crust = " + StrCrustSPPosition);
            System.out.println("crust = " + position);
            CrustSPPosition = Integer.parseInt(StrCrustSPPosition);

        }