两个微调器在选中时互相重置(android)

时间:2016-05-05 08:02:32

标签: android spinner

在我的Android应用程序中,我有2个微调器,例如一个用于选择水果,另一个用于选择花。

当我选择水果时,要求是这样的,那么花必须重置,反之亦然。简而言之,只有一种可以选择水果或花卉。

然后我在选择后有API调用...

对于重置我使用spinner.setSelection(0)方法在调用中创建某种冗余,因为setSelection方法自动调用onItemSelectedListener。

这是我的代码: -

spnFruit.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {

            if(flower) {
                return;
            }

            Log.e("TYPE", "Fruit");
            fruit = true;
            spnFlower.setSelection(0);
            fruit = false;

            // API call
        }

        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {

        }
    });

    spnFlower.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {

            if(fruit) {
                return;
            }

            Log.e("TYPE", "Flower");
            flower = true;
            spnFruit.setSelection(0);
            flower = false;

            // API call
        }

        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {

        }
    });

水果和花是布尔值。

请告诉我的哥们我哪里错了?

1 个答案:

答案 0 :(得分:1)

我也面临同样的问题。我通过致电public void setSelection (int position, boolean animate)

来克服这一点
spinner.setAdapter(adapter);
spinner.setSelection(0, false);
spinner.setOnItemSelectedListener(callback);

设置为false后,它不会调用OnItemSelectedListener回调。