简体   繁体   English

使用setOnItemSelectedListener的微调器不执行方法

[英]spinner with setOnItemSelectedListener doesn't execute methods

I have created a spinner and it takes it's values from some database. 我创建了一个微调器,它从一些数据库中获取它的值。 The spinner also has a setOnItemSelectedListener which executes a method. 微调器还具有执行方法的setOnItemSelectedListener。 Whenever I click on an item on the spinner i doesn't execute what's inside of it. 每当我单击微调器上的某个项目时,我都不会执行其中的内容。

    //Getting values from database
    myDBJ = new JobDatabaseHelper(this);
    ArrayList<String> jobname= myDBJ.getalljobname();

    Spinner spinnerJob = (Spinner) findViewById(R.id.spinnerJob);
    ArrayAdapter<String> adapterForJob = new ArrayAdapter<String>(InfoActivity.this, android.R.layout.simple_spinner_item, jobname);
    adapterForJob.notifyDataSetChanged();
    adapterForJob.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinnerJob.setAdapter(adapterForJob);
    spinnerJob.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
            Toast.makeText(InfoActivity.this, "test" + i ,Toast.LENGTH_SHORT).show();
            //refreshrate();
        }

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

        }
    });

I have even made a toast message inside of it so that I will know if it worked. 我什至在其中做了一个祝酒消息,以便我知道它是否有效。 When i click on an item it doesn't show the toast message. 当我单击一个项目时,它不会显示吐司消息。 Another detail I would like to add is that this inside a method called "refreshspinners" which is called in my onCreate and my onPostResume override methods. 我想补充的另一个细节是,此方法在称为“ refreshspinners”的方法中,该方法在我的onCreate和onPostResume覆盖方法中调用。

Can you try with a static String list: 您可以尝试使用静态字符串列表:

ArrayList<String> jobname = (ArrayList<String>) Arrays.asList(new String[] {"Engineer", "Manager", "Business developer"});

Spinner spinnerJob = (Spinner) findViewById(R.id.spinnerJob);
ArrayAdapter<String> adapterForJob = new ArrayAdapter<String>(InfoActivity.this, android.R.layout.simple_spinner_item, jobname);
adapterForJob.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinnerJob.setAdapter(adapterForJob);

spinnerJob.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
        Toast.makeText(InfoActivity.this, "test" + i ,Toast.LENGTH_SHORT).show();
        //refreshrate();
    }

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

    }
});

You may try like this: 您可以这样尝试:

Spinner sp = (Spinner)       findViewById(R.id.spnner);
        ArrayList<String> list = myDBJ.getAllJobName();
     sp.setAdapter(new       ArrayAdapter<String>(getBaseContext(),android.R.layout.simple_spinner_dropdown_item,list));

        sp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener(){

            @Override
            public void onItemSelected(AdapterView<?> p1, View p2, int p3, long p4)
            {
                Toast.makeText(getApplicationContext(),list.get(p3),Toast.LENGTH_SHORT).show();


            }

            @Override
            public void onNothingSelected(AdapterView<?> p1)
            {
                // TODO: Implement this method
            }
        });

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM