Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android spinner with dialog

I don't want it to be dropdown. I want on click of spinner, to be open him dialogbox. How can this be done?
What I implemented below ontouch of spinner I open dialog...however it also opens dropdown as well.
I want to disable dropdown and implement it on click..

final Spinner serverSpinner = (Spinner) findViewById(R.id.serverSpinner);
String[] array_spinner=new String[2];
array_spinner[0]="hoho";
array_spinner[1]="lala";
ArrayAdapter adapter = new ArrayAdapter(this,
android.R.layout.simple_spinner_item, array_spinner);
serverSpinner.setAdapter(adapter);
serverSpinner.setOnTouchListener(new OnTouchListener()
{   
    @Override
    public boolean onTouch(View arg0, MotionEvent arg1) {
        // TODO Auto-generated method stub
        showSpinner();
        return false;
    }
}); 

protected void showSpinner()
{
    AlertDialog.Builder b = new Builder(this);
    String[] options = {"hoho","lala"};

    b.setTitle("Select an option" );
    b.setSingleChoiceItems(options, -1,new DialogInterface.OnClickListener(){
        public void onClick(DialogInterface dialog, int which)
        {
            dialog.dismiss();
            switch(which){
                case 0:
                {
                    break;
                }
                case 1:
                {
                    break;
                }
            }
        }
    });
    b.setPositiveButton("CANCEL", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int id) {
             dialog.dismiss();
        }
    });     
    b.show();
} 
like image 901
user3278732 Avatar asked Apr 11 '26 07:04

user3278732


1 Answers

Here is an Spinner subclass which overrides performClick() to show a dialog instead of a dropdown. No XML required. Give it a try, let me know if it works for you.

public class DialogSpinner extends Spinner {
    public DialogSpinner(Context context) {
        super(context);
    }

    @Override 
    public boolean performClick() {
        new AlertDialog.Builder(getContext()).setAdapter((ListAdapter) getAdapter(), 
            new DialogInterface.OnClickListener() {
                @Override public void onClick(DialogInterface dialog, int which) {
                    setSelection(which);
                    dialog.dismiss();
                }
            }).create().show();
        return true;
    }
}

For more information read this article: How To Make Android Spinner Options Popup In A Dialog

like image 195
Roger Keays Avatar answered Apr 13 '26 21:04

Roger Keays