Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android set selected item in alert dialog

I'm creating an Alert Dialog in the beginning of my application to let the user to choose where to store the data which my application is downloading from web. The thing that I want to achieve now is depending on the size of Internal / External Storage I want to set selected one of the items. Here is the code which I'm using to create the dialog :

@SuppressWarnings("static-access")
public void createDialog(){


    final CharSequence[] items = {"Phone Memory - "+memorysize+" free space", "SD Card - "+megAvailable+" MB free space"};

    final int userId = rpc.getUserId(this);
    final String servername = rpc.getCurrentServerName(this);

    SharedPreferences stampiiSettings = PreferenceManager.getDefaultSharedPreferences(MyCollectionList.this);
    final SharedPreferences.Editor editor = stampiiSettings.edit();

    AlertDialog.Builder builder = new AlertDialog.Builder(this.getParent());
    builder.setTitle("Select Storage Path");
    builder.setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int item) {

            if(item == 0){

                rpc.createFoldersInInternalStorage(servername, userId, MyCollectionList.this);
                Toast.makeText(getApplicationContext(), "Selected Storage Path : Phone Memory", Toast.LENGTH_SHORT).show();
                editor.putInt("storagePath", 1);
                editor.commit();
            } else if (item == 1){

                rpc.createFoldersInExternalStorage(servername, userId, MyCollectionList.this);
                Toast.makeText(getApplicationContext(), "Selected Storage Path : SD Card", Toast.LENGTH_SHORT).show();
                editor.putInt("storagePath", 2);
                editor.commit();
            }
        }});

        builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
                mHandlerUpdateUi.post(mUpdateUpdateUi); // update UI            
        }
        });
        AlertDialog alert = builder.show();
}

And another thing that I want to achieve, how can I prevent user to close the Alert Dialog if he didn't choose any item. I don't want to close the dialog on pressing back button or when he click OK button. Any ideas/ suggestions/ help are welcomed!

like image 250
Android-Droid Avatar asked Nov 18 '11 10:11

Android-Droid


2 Answers

Do something like this:

int selected = 0; // or whatever you want
builder.setSingleChoiceItems(items, selected, new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int item) {
              //onclick
    }});
like image 173
Android-Droid Avatar answered Nov 02 '22 03:11

Android-Droid


for closing button you can define the cancel button with the ok like this way

builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
            // no need to write anything here just implement this interface into this button
        }
});

for selected item you can either make the spinner as local define for this class or you can assign this value to any variable like selected.

int selected = 0; // if you want in integer or 
String selected = "internal"; // you can go with string

now you can set the by default value to this and get the value in when you click on ok button of the dialog box

builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int which) {
            // here get the selected item value 
    }
});
like image 3
Pratik Avatar answered Nov 02 '22 05:11

Pratik