Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I use spinner setOnItemLongClickListener

I am trying to make the Spinner behave different way when the user clicked on an item for a long time. I have spinner with some project and I want two things.

  1. When the user simple click on an item I want to normal select it.
  2. When the user have long clicked on an item I want to show dialog, with options like "Edit item", "Delete item".

The first step works well (ofcourse), but when I am trying to do the second task I can not make spinner to generate longClicked event.

Here is my code:

    this.projectSpinner = (Spinner) this.findViewById(R.id.SpinnerProjects);
    this.projectSpinner.setLongClickable(true);

    this.projectSpinner.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener(){
        public boolean onItemLongClick(AdapterView<?> arg0, 
                                       View arg1, 
                                       int arg2, 
                                       long arg3) {
            Toast.makeText(
                 AndroidTimeTrackerMainActivity.this, 
                 "Long click", 
                 Toast.LENGTH_SHORT).show(); // This toast doesn't show up.
            return false;
        }

    });
like image 436
elCarda Avatar asked Apr 28 '10 14:04

elCarda


2 Answers

The Spinner currently does not support OnItemLongClickListener.

like image 167
Romain Guy Avatar answered Sep 27 '22 19:09

Romain Guy


You can add an OnLongClickListener to the Spinner though. It wont be fired when an item on the menu is long clicked but it will be fired when the user long clicks the spinner itself.

this.projectSpinner.setOnLongClickListener(new OnLongClickListener() 
{
    @Override
    public boolean onLongClick(View v) 
    {
        System.out.println(chuteSpinner.getSelectedItem().toString() + " is long clicked");
        return true;
    }
});
like image 34
big al Avatar answered Sep 27 '22 19:09

big al