How to capture onClick event in Android for counter

I want to capture the onClick event when the user selects a counter value.

I tried to implement OnClickListener and using the following code:

 @Override public void onClick(final View view) { if (view == countrySpinner) { Toast.makeText(this, "Override OK!", 3); } } 

And binding with:

 countrySpinner.setOnClickListener(this); 

This compiles, but I get a RuntimeException , suggesting that I use OnItemClickListener rather than OnClickListener for the AdapterView .

How can I capture this onClick event?

+9
source share
3 answers

Instead of setting the OnClickListener counter, try installing OnTouchListener and OnKeyListener.

 spinner.setOnTouchListener(spinnerOnTouch); spinner.setOnKeyListener(spinnerOnKey); 

and listeners:

 private View.OnTouchListener spinnerOnTouch = new View.OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_UP) { //Your code } return false; } }; private static View.OnKeyListener spinnerOnKey = new View.OnKeyListener() { public boolean onKey(View v, int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) { //your code return true; } else { return false; } } }; 
+18
source

Don't treat a spinner like a button; buttons have onClick events. Spinners have onItemSelected events.

You should capture the Spinner onItemSelected event as follows:

 import android.widget.AdapterView; Spinner productname_spinner =(Spinner) findViewById(R.id.your_spinner); productname_spinner.setOnItemSelectedListener( new AdapterView.OnItemSelectedListener() { public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { Object item = parent.getItemAtPosition(pos); System.out.println(item.toString()); //prints the text in spinner item. } public void onNothingSelected(AdapterView<?> parent) { } }); 

Kotlin looks like the following:

 mySpinner.onItemSelectedListener = object: OnItemSelectedListener { override fun onNothingSelected(parent: AdapterView<*>?) { // Do nothing } override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) { val selection = parent?.getItemAtPosition(position) viewModel.updateSelection(selection as String) } } 
+15
source

I tried to implement OnItemSelectedListener to get the Selected Spinner Value using the following code:

 String selectAreaNameString; AreaSpinner.setOnItemSelectedListener(AreaSpinnerSelected = new AdapterView.OnItemSelectedListener() { public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { Object item = parent.getItemAtPosition(pos); selectAreaNameString = item.toString(); }); 
0
source

All Articles