0

i have two spinners, city and neighborhood, when i select a city it populates neighborhoods list. but i want when i click neighborhood spinner and city is empty to show a message or an Alertdialog. i tried to use ontouchevent on the second spinner but it doesn't work. i m using custom spinner com.toptoche.searchablespinnerlibrary.SearchableSpinner thanks for help

        neighborhoodSpinner.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                if (event.getAction() == MotionEvent.ACTION_UP) {
                    Toast.makeText(getApplicationContext(),"city emty",Toast.LENGTH_LONG).show();
                }
                return false;
            }
        });
  • 4
    Possible duplicate of [How to capture onClick event in Android for a spinner](https://stackoverflow.com/questions/10213015/how-to-capture-onclick-event-in-android-for-a-spinner) – AskNilesh Mar 12 '18 at 12:06
  • i m working with com.toptoche.searchablespinnerlibrary.SearchableSpinner – StraightforwardDev Mar 12 '18 at 13:30

4 Answers4

0

why don't you use onClickListener instead?

s.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

        }
    });
0
cityspinner.setOnItemSelectedListener(new OnItemSelectedListener() 
    {
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) 
        {
            String selectedItemcity = parent.getItemAtPosition(position).toString();

        } // to close the onItemSelected
        public void onNothingSelected(AdapterView<?> parent) 
        {

        }           
    });


neighborhoodSpinner.setOnItemSelectedListener(new OnItemSelectedListener() 
    {
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) 
        {
            String selectedItemneighbour = parent.getItemAtPosition(position).toString();
            if(selectedItemcity.equals("your item name")) //Also you can check previous spinners position here if 0 then show popup or dilaog
            {

                 // do your stuff
            }
        } // to close the onItemSelected
        public void onNothingSelected(AdapterView<?> parent) 
        {

        }           
    });
matin sayyad
  • 575
  • 3
  • 10
0

Use setOnItemSelectedListener to get spinner item selection listener.

mSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int position, long l) {
            // Write your code here

        }

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

        }
    });
yatin deokar
  • 730
  • 11
  • 20
0

It depends whether your spinner has a default value to mean nothing. For example, if your spinner has a city value of "Please select a city" or something like that, which doesn't have to be the case.

Your spinner may already have a city selected when it's populated.

In the case that "Please select a city" is an option, this code might help:

   Spinner city= findViewById(R.id.spinner_city);
   Spinner neighborhood = findViewById(R.id.spinner_neighborhood);

   neighborhood.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(city.getSelectedItem().toString().equals("Please select a city")){
                Toast.makeText(MyActivity.this, "Please select a city first", Toast.LENGTH_SHORT).show();
            }else{
                // do nothing
            }
        }
    });
  • i can't use onClickListener it gives me runtime exception : runtime exception : Don't call setOnClickListener for an AdapterView. You probably want setOnItemClickListener instead – StraightforwardDev Mar 12 '18 at 13:25