我的活动开始时Spinner初始化 - Android

时间:2011-05-08 22:14:29

标签: android spinner

我有Spinner的名字:turListe。它从数据库中获取输入值。当我开始我的活动时,onOtemSelected会自动启动。我该如何解决这个问题?

turListe.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1,
                int arg2, long arg3) {
            String turAdi;
            Intent intent = new Intent(MainScreen.this, TarifListe.class);
            Bundle bundle = new Bundle();

            turAdi = arg0.getItemAtPosition(arg2).toString();
            bundle.putString("turad", turAdi);
            intent.putExtras(bundle);
            startActivity(intent);
        }

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

        }

    });

4 个答案:

答案 0 :(得分:1)

我使用相关微调器旁边的按钮解决了我的问题。我知道这不是一个完美的解决方案,但它在短时间内解决了我的问题。

答案 1 :(得分:1)

我想我在全局声明中用布尔标志作为静态解决了它。

MyOnItemSelectedListener onItemSelectedListener = new MyOnItemSelectedListener(false);
sp_choose1.setOnItemSelectedListener(onItemSelectedListener);
sp_choose2.setOnItemSelectedListener(onItemSelectedListener);
onItemSelectedListener.getDataforList();

使用此类并切换布尔值以启用或禁用所调用的onItemSelectedListener。

private class MyOnItemSelectedListener implements OnItemSelectedListener {

        public MyOnItemSelectedListener(boolean bool){
            spinner_bug = bool;
        }

        public void onItemSelected(AdapterView<?> parent,
                View view, int pos, long id) {
            Toast.makeText(parent.getContext(), "The planet is " +
                    parent.getItemAtPosition(pos).toString(), Toast.LENGTH_LONG).show();
            if(spinner_bug)
                getDataforList();
        }

        public void onNothingSelected(AdapterView parent) {
            // Do nothing.
        }

        private void getDataforList(){  
                  //dosomething
                }
     }

答案 2 :(得分:0)

这是一个已知问题。我相信一种可能的解决方法是在调用setOnItemSelectedListener()之前在微调器上设置适配器。

如果无法做到这一点,那么您可以使用isAdapterSet之类的布尔值,并使用onItemSelected()方法检查它是否应该忽略选择事件。

答案 3 :(得分:-1)

仅使用OnItemSelectedListener()而不是AdapterView.OnItemSelectedListener()