Jonatan
Jonatan

Reputation: 413

setOnItemSelectedListener on custom spinner adapter doesnt work

Hi guys hope u can help me, I have a custom ArrayAdapter for my spinner, and I set the Adapter inside onPostExecute() in an AsyncTask. The problem is when I call the setOnItemSelectedListener() it doesn't recognize the click event. My spinner is like a dialog, it works ok, the list of items is showed in popup spinner but the item selector doesnt work.. I guess it's because I miss the Context inside setOnItemSelectedListener() but not sure about that.

Here is my code:

onPostExecute:

protected void onPostExecute(String result){
                pDialog.dismiss(); 

spinAdmin.setAdapter(new MyAdapter(getApplication(), R.layout.opina_spinner_item_saf,safList));

                spinAdmin.setOnItemSelectedListener(new OnItemSelectedListener(){

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

                        Toast.makeText(getBaseContext(),"MyItem", 
                                Toast.LENGTH_SHORT).show();
                    }

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

                });
            }

In the same Activity my Adapter class:

public class MyAdapter extends ArrayAdapter<String>{
        public MyAdapter(Context ctx, int txtViewResourceId, ArrayList<String> objects) { 
            super(ctx, txtViewResourceId, objects);
        }

        @Override 
        public View getDropDownView(int position, View cnvtView, ViewGroup prnt) {
            return getCustomView(position, cnvtView, prnt); 
            }
        @Override 
        public View getView(int position, View cnvtView, ViewGroup prnt) { 
            return getCustomView(position, cnvtView, prnt); 
            }

        public View getCustomView(int position, View cnvtView, ViewGroup prnt) { 
            LayoutInflater inflater = getLayoutInflater(); 
            View mySpinner = inflater.inflate(R.layout.opina_spinner_item_saf, prnt, false); 

            TextView main_text = (TextView) mySpinner .findViewById(R.id.txt_spinner_item_saf); 
            main_text.setText(safList.get(position)); 

            return mySpinner;

            }

    }

Upvotes: 1

Views: 1048

Answers (1)

kelvincer
kelvincer

Reputation: 6138

Try this:

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

        }

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

        }
    });

Upvotes: 1

Related Questions