AlertDialog.java revision a1e63319428c5713e89f67a7297feeec34c51a8d
19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2007 The Android Open Source Project 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License. 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License. 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.app; 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 19c49c17314d4b7f36e50a5b01edd6d4b13b940366Adam Powellimport com.android.internal.app.AlertController; 20c49c17314d4b7f36e50a5b01edd6d4b13b940366Adam Powell 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.Context; 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.DialogInterface; 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.database.Cursor; 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.graphics.drawable.Drawable; 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Bundle; 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Message; 272fbf4de64f0ec5052201cea9519c44d5b1789a40Adam Powellimport android.util.TypedValue; 28c49c17314d4b7f36e50a5b01edd6d4b13b940366Adam Powellimport android.view.ContextThemeWrapper; 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.KeyEvent; 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.View; 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.WindowManager; 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.widget.AdapterView; 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.widget.Button; 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.widget.ListAdapter; 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.widget.ListView; 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * A subclass of Dialog that can display one, two or three buttons. If you only want to 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * display a String in this dialog box, use the setMessage() method. If you 40c9006872800fceb1a5fef5e8f0470eb79953e79aAdam Powell * want to display a more complex view, look up the FrameLayout called "custom" 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * and add your view to it: 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <pre> 44c9006872800fceb1a5fef5e8f0470eb79953e79aAdam Powell * FrameLayout fl = (FrameLayout) findViewById(android.R.id.custom); 45c9006872800fceb1a5fef5e8f0470eb79953e79aAdam Powell * fl.addView(myView, new LayoutParams(MATCH_PARENT, WRAP_CONTENT)); 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * </pre> 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p>The AlertDialog class takes care of automatically setting 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link WindowManager.LayoutParams#FLAG_ALT_FOCUSABLE_IM 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM} for you based on whether 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * any views in the dialog return true from {@link View#onCheckIsTextEditor() 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * View.onCheckIsTextEditor()}. Generally you want this set for a Dialog 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * without text editors, so that it will be placed on top of the current 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * input method UI. You can modify this behavior by forcing the flag to your 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * desired mode after calling {@link #onCreate}. 56558459fe85f56f29a6ed6a4d0adb4a0bd6665884Joe Fernandez * 57558459fe85f56f29a6ed6a4d0adb4a0bd6665884Joe Fernandez * <div class="special reference"> 58558459fe85f56f29a6ed6a4d0adb4a0bd6665884Joe Fernandez * <h3>Developer Guides</h3> 59558459fe85f56f29a6ed6a4d0adb4a0bd6665884Joe Fernandez * <p>For more information about creating dialogs, read the 60558459fe85f56f29a6ed6a4d0adb4a0bd6665884Joe Fernandez * <a href="{@docRoot}guide/topics/ui/dialogs.html">Dialogs</a> developer guide.</p> 61558459fe85f56f29a6ed6a4d0adb4a0bd6665884Joe Fernandez * </div> 629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class AlertDialog extends Dialog implements DialogInterface { 649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private AlertController mAlert; 659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 66e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn /** 67e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn * Special theme constant for {@link #AlertDialog(Context, int)}: use 68e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn * the traditional (pre-Holo) alert dialog theme. 69e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn */ 70e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn public static final int THEME_TRADITIONAL = 1; 71e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn 72e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn /** 73e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn * Special theme constant for {@link #AlertDialog(Context, int)}: use 74e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn * the holographic alert theme with a dark background. 75e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn */ 76e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn public static final int THEME_HOLO_DARK = 2; 77e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn 78e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn /** 79e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn * Special theme constant for {@link #AlertDialog(Context, int)}: use 80e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn * the holographic alert theme with a light background. 81e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn */ 82e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn public static final int THEME_HOLO_LIGHT = 3; 836e90a362bc66cc67b1beae27b21d3f0148403b08Adam Powell 846e90a362bc66cc67b1beae27b21d3f0148403b08Adam Powell /** 856e90a362bc66cc67b1beae27b21d3f0148403b08Adam Powell * Special theme constant for {@link #AlertDialog(Context, int)}: use 866e90a362bc66cc67b1beae27b21d3f0148403b08Adam Powell * the device's default alert theme with a dark background. 876e90a362bc66cc67b1beae27b21d3f0148403b08Adam Powell */ 886e90a362bc66cc67b1beae27b21d3f0148403b08Adam Powell public static final int THEME_DEVICE_DEFAULT_DARK = 4; 896e90a362bc66cc67b1beae27b21d3f0148403b08Adam Powell 906e90a362bc66cc67b1beae27b21d3f0148403b08Adam Powell /** 916e90a362bc66cc67b1beae27b21d3f0148403b08Adam Powell * Special theme constant for {@link #AlertDialog(Context, int)}: use 927ed189e457b16c06b0425bd28aeeb1df5c8ff5b8Scott Kennedy * the device's default alert theme with a light background. 936e90a362bc66cc67b1beae27b21d3f0148403b08Adam Powell */ 946e90a362bc66cc67b1beae27b21d3f0148403b08Adam Powell public static final int THEME_DEVICE_DEFAULT_LIGHT = 5; 95e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn 969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project protected AlertDialog(Context context) { 97e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn this(context, resolveDialogTheme(context, 0), true); 989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 100e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn /** 101e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn * Construct an AlertDialog that uses an explicit theme. The actual style 102e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn * that an AlertDialog uses is a private implementation, however you can 103e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn * here supply either the name of an attribute in the theme from which 104e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn * to get the dialog's style (such as {@link android.R.attr#alertDialogTheme} 105e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn * or one of the constants {@link #THEME_TRADITIONAL}, 106e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn * {@link #THEME_HOLO_DARK}, or {@link #THEME_HOLO_LIGHT}. 107e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn */ 1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project protected AlertDialog(Context context, int theme) { 109e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn this(context, theme, true); 110e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn } 111e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn 112a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown AlertDialog(Context context, int theme, boolean createThemeContextWrapper) { 113a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown super(context, resolveDialogTheme(context, theme), createThemeContextWrapper); 114a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown 115cfaf8878de83b6bb7a24aee3c240259f428e6e4aDianne Hackborn mWindow.alwaysReadCloseOnTouchAttr(); 116e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn mAlert = new AlertController(getContext(), this, getWindow()); 1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project protected AlertDialog(Context context, boolean cancelable, OnCancelListener cancelListener) { 120e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn super(context, resolveDialogTheme(context, 0)); 121cfaf8878de83b6bb7a24aee3c240259f428e6e4aDianne Hackborn mWindow.alwaysReadCloseOnTouchAttr(); 1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project setCancelable(cancelable); 1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project setOnCancelListener(cancelListener); 1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mAlert = new AlertController(context, this, getWindow()); 1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 127e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn static int resolveDialogTheme(Context context, int resid) { 128e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn if (resid == THEME_TRADITIONAL) { 129e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn return com.android.internal.R.style.Theme_Dialog_Alert; 130e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn } else if (resid == THEME_HOLO_DARK) { 131e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn return com.android.internal.R.style.Theme_Holo_Dialog_Alert; 132e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn } else if (resid == THEME_HOLO_LIGHT) { 133e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn return com.android.internal.R.style.Theme_Holo_Light_Dialog_Alert; 1346e90a362bc66cc67b1beae27b21d3f0148403b08Adam Powell } else if (resid == THEME_DEVICE_DEFAULT_DARK) { 1356e90a362bc66cc67b1beae27b21d3f0148403b08Adam Powell return com.android.internal.R.style.Theme_DeviceDefault_Dialog_Alert; 1366e90a362bc66cc67b1beae27b21d3f0148403b08Adam Powell } else if (resid == THEME_DEVICE_DEFAULT_LIGHT) { 1376e90a362bc66cc67b1beae27b21d3f0148403b08Adam Powell return com.android.internal.R.style.Theme_DeviceDefault_Light_Dialog_Alert; 138e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn } else if (resid >= 0x01000000) { // start of real resource IDs. 139e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn return resid; 140e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn } else { 141e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn TypedValue outValue = new TypedValue(); 142e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn context.getTheme().resolveAttribute(com.android.internal.R.attr.alertDialogTheme, 143e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn outValue, true); 144e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn return outValue.resourceId; 145e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn } 1462fbf4de64f0ec5052201cea9519c44d5b1789a40Adam Powell } 1472fbf4de64f0ec5052201cea9519c44d5b1789a40Adam Powell 1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 149a1e63319428c5713e89f67a7297feeec34c51a8dAlan Viverette * Gets one of the buttons used in the dialog. Returns null if the specified 150a1e63319428c5713e89f67a7297feeec34c51a8dAlan Viverette * button does not exist in the dialog. 1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p> 152a1e63319428c5713e89f67a7297feeec34c51a8dAlan Viverette * Prior to API 20, this function could only be called after the dialog was 153a1e63319428c5713e89f67a7297feeec34c51a8dAlan Viverette * shown. In later versions, this function may be called at any time; 154a1e63319428c5713e89f67a7297feeec34c51a8dAlan Viverette * however, calling this function locks in various attributes including 155a1e63319428c5713e89f67a7297feeec34c51a8dAlan Viverette * buttons and icons. 156a1e63319428c5713e89f67a7297feeec34c51a8dAlan Viverette * 1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param whichButton The identifier of the button that should be returned. 1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * For example, this can be 1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link DialogInterface#BUTTON_POSITIVE}. 1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return The button from the dialog, or null if a button does not exist. 1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Button getButton(int whichButton) { 163a1e63319428c5713e89f67a7297feeec34c51a8dAlan Viverette // Superclass handles re-entrance and multiple calls. 164a1e63319428c5713e89f67a7297feeec34c51a8dAlan Viverette dispatchOnCreate(null); 1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mAlert.getButton(whichButton); 1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 167a1e63319428c5713e89f67a7297feeec34c51a8dAlan Viverette 1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Gets the list view used in the dialog. 1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return The {@link ListView} from the dialog. 1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ListView getListView() { 1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mAlert.getListView(); 1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setTitle(CharSequence title) { 1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project super.setTitle(title); 1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mAlert.setTitle(title); 1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see Builder#setCustomTitle(View) 1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setCustomTitle(View customTitleView) { 1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mAlert.setCustomTitle(customTitleView); 1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setMessage(CharSequence message) { 1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mAlert.setMessage(message); 1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set the view to display in that dialog. 1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setView(View view) { 1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mAlert.setView(view); 1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set the view to display in that dialog, specifying the spacing to appear around that 2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * view. 2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param view The view to show in the content area of the dialog 2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param viewSpacingLeft Extra space to appear to the left of {@code view} 2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param viewSpacingTop Extra space to appear above {@code view} 2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param viewSpacingRight Extra space to appear to the right of {@code view} 2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param viewSpacingBottom Extra space to appear below {@code view} 2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setView(View view, int viewSpacingLeft, int viewSpacingTop, int viewSpacingRight, 2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int viewSpacingBottom) { 2139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mAlert.setView(view, viewSpacingLeft, viewSpacingTop, viewSpacingRight, viewSpacingBottom); 2149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set a message to be sent when a button is pressed. 2189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param whichButton Which button to set the message for, can be one of 2209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link DialogInterface#BUTTON_POSITIVE}, 2219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link DialogInterface#BUTTON_NEGATIVE}, or 2229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link DialogInterface#BUTTON_NEUTRAL} 2239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param text The text to display in positive button. 2249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param msg The {@link Message} to be sent when clicked. 2259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setButton(int whichButton, CharSequence text, Message msg) { 2279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mAlert.setButton(whichButton, text, null, msg); 2289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set a listener to be invoked when the positive button of the dialog is pressed. 2329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param whichButton Which button to set the listener on, can be one of 2349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link DialogInterface#BUTTON_POSITIVE}, 2359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link DialogInterface#BUTTON_NEGATIVE}, or 2369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link DialogInterface#BUTTON_NEUTRAL} 2379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param text The text to display in positive button. 2389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param listener The {@link DialogInterface.OnClickListener} to use. 2399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setButton(int whichButton, CharSequence text, OnClickListener listener) { 2419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mAlert.setButton(whichButton, text, listener, null); 2429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @deprecated Use {@link #setButton(int, CharSequence, Message)} with 2469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link DialogInterface#BUTTON_POSITIVE}. 2479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Deprecated 2499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setButton(CharSequence text, Message msg) { 2509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project setButton(BUTTON_POSITIVE, text, msg); 2519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @deprecated Use {@link #setButton(int, CharSequence, Message)} with 2559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link DialogInterface#BUTTON_NEGATIVE}. 2569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Deprecated 2589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setButton2(CharSequence text, Message msg) { 2599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project setButton(BUTTON_NEGATIVE, text, msg); 2609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @deprecated Use {@link #setButton(int, CharSequence, Message)} with 2649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link DialogInterface#BUTTON_NEUTRAL}. 2659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Deprecated 2679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setButton3(CharSequence text, Message msg) { 2689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project setButton(BUTTON_NEUTRAL, text, msg); 2699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set a listener to be invoked when button 1 of the dialog is pressed. 2739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param text The text to display in button 1. 2759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param listener The {@link DialogInterface.OnClickListener} to use. 2769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @deprecated Use 2779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #setButton(int, CharSequence, android.content.DialogInterface.OnClickListener)} 2789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * with {@link DialogInterface#BUTTON_POSITIVE} 2799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Deprecated 2819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setButton(CharSequence text, final OnClickListener listener) { 2829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project setButton(BUTTON_POSITIVE, text, listener); 2839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set a listener to be invoked when button 2 of the dialog is pressed. 2879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param text The text to display in button 2. 2889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param listener The {@link DialogInterface.OnClickListener} to use. 2899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @deprecated Use 2909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #setButton(int, CharSequence, android.content.DialogInterface.OnClickListener)} 2919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * with {@link DialogInterface#BUTTON_NEGATIVE} 2929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Deprecated 2949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setButton2(CharSequence text, final OnClickListener listener) { 2959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project setButton(BUTTON_NEGATIVE, text, listener); 2969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set a listener to be invoked when button 3 of the dialog is pressed. 3009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param text The text to display in button 3. 3019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param listener The {@link DialogInterface.OnClickListener} to use. 3029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @deprecated Use 3039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #setButton(int, CharSequence, android.content.DialogInterface.OnClickListener)} 3049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * with {@link DialogInterface#BUTTON_POSITIVE} 3059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Deprecated 3079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setButton3(CharSequence text, final OnClickListener listener) { 3089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project setButton(BUTTON_NEUTRAL, text, listener); 3099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set resId to 0 if you don't want an icon. 3139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param resId the resourceId of the drawable to use as the icon or 0 3149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * if you don't want an icon. 3159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setIcon(int resId) { 3179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mAlert.setIcon(resId); 3189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setIcon(Drawable icon) { 3219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mAlert.setIcon(icon); 3229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 324947f7824118f0e9b642df8760a8725a7eda59318Adam Powell /** 325947f7824118f0e9b642df8760a8725a7eda59318Adam Powell * Set an icon as supplied by a theme attribute. e.g. android.R.attr.alertDialogIcon 326947f7824118f0e9b642df8760a8725a7eda59318Adam Powell * 327947f7824118f0e9b642df8760a8725a7eda59318Adam Powell * @param attrId ID of a theme attribute that points to a drawable resource. 328947f7824118f0e9b642df8760a8725a7eda59318Adam Powell */ 329947f7824118f0e9b642df8760a8725a7eda59318Adam Powell public void setIconAttribute(int attrId) { 330947f7824118f0e9b642df8760a8725a7eda59318Adam Powell TypedValue out = new TypedValue(); 331947f7824118f0e9b642df8760a8725a7eda59318Adam Powell mContext.getTheme().resolveAttribute(attrId, out, true); 332947f7824118f0e9b642df8760a8725a7eda59318Adam Powell mAlert.setIcon(out.resourceId); 333947f7824118f0e9b642df8760a8725a7eda59318Adam Powell } 334947f7824118f0e9b642df8760a8725a7eda59318Adam Powell 3359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setInverseBackgroundForced(boolean forceInverseBackground) { 3369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mAlert.setInverseBackgroundForced(forceInverseBackground); 3379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 3409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project protected void onCreate(Bundle savedInstanceState) { 3419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project super.onCreate(savedInstanceState); 3429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mAlert.installContent(); 3439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 3469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean onKeyDown(int keyCode, KeyEvent event) { 3479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mAlert.onKeyDown(keyCode, event)) return true; 3489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return super.onKeyDown(keyCode, event); 3499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 3529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean onKeyUp(int keyCode, KeyEvent event) { 3539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mAlert.onKeyUp(keyCode, event)) return true; 3549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return super.onKeyUp(keyCode, event); 3559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static class Builder { 3589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private final AlertController.AlertParams P; 359e429c5ec9d52a5e9af9133f5de9f1002f04aede1Martin Nordholts private int mTheme; 3609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Constructor using a context for this builder and the {@link AlertDialog} it creates. 3639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Builder(Context context) { 365e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn this(context, resolveDialogTheme(context, 0)); 366e429c5ec9d52a5e9af9133f5de9f1002f04aede1Martin Nordholts } 367e429c5ec9d52a5e9af9133f5de9f1002f04aede1Martin Nordholts 368e429c5ec9d52a5e9af9133f5de9f1002f04aede1Martin Nordholts /** 369e429c5ec9d52a5e9af9133f5de9f1002f04aede1Martin Nordholts * Constructor using a context and theme for this builder and 370e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn * the {@link AlertDialog} it creates. The actual theme 371e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn * that an AlertDialog uses is a private implementation, however you can 372e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn * here supply either the name of an attribute in the theme from which 373e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn * to get the dialog's style (such as {@link android.R.attr#alertDialogTheme} 374e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn * or one of the constants 375e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn * {@link AlertDialog#THEME_TRADITIONAL AlertDialog.THEME_TRADITIONAL}, 376e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn * {@link AlertDialog#THEME_HOLO_DARK AlertDialog.THEME_HOLO_DARK}, or 377e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn * {@link AlertDialog#THEME_HOLO_LIGHT AlertDialog.THEME_HOLO_LIGHT}. 378e429c5ec9d52a5e9af9133f5de9f1002f04aede1Martin Nordholts */ 379e429c5ec9d52a5e9af9133f5de9f1002f04aede1Martin Nordholts public Builder(Context context, int theme) { 380e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn P = new AlertController.AlertParams(new ContextThemeWrapper( 381e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn context, resolveDialogTheme(context, theme))); 382e429c5ec9d52a5e9af9133f5de9f1002f04aede1Martin Nordholts mTheme = theme; 3839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 386c49c17314d4b7f36e50a5b01edd6d4b13b940366Adam Powell * Returns a {@link Context} with the appropriate theme for dialogs created by this Builder. 387c49c17314d4b7f36e50a5b01edd6d4b13b940366Adam Powell * Applications should use this Context for obtaining LayoutInflaters for inflating views 388c49c17314d4b7f36e50a5b01edd6d4b13b940366Adam Powell * that will be used in the resulting dialogs, as it will cause views to be inflated with 389c49c17314d4b7f36e50a5b01edd6d4b13b940366Adam Powell * the correct theme. 390c49c17314d4b7f36e50a5b01edd6d4b13b940366Adam Powell * 391c49c17314d4b7f36e50a5b01edd6d4b13b940366Adam Powell * @return A Context for built Dialogs. 392c49c17314d4b7f36e50a5b01edd6d4b13b940366Adam Powell */ 393c49c17314d4b7f36e50a5b01edd6d4b13b940366Adam Powell public Context getContext() { 394ccb013ffac696df1cd1bfc528264e583d01c9ab5Adam Powell return P.mContext; 395c49c17314d4b7f36e50a5b01edd6d4b13b940366Adam Powell } 396c49c17314d4b7f36e50a5b01edd6d4b13b940366Adam Powell 397c49c17314d4b7f36e50a5b01edd6d4b13b940366Adam Powell /** 3989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set the title using the given resource id. 3999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 4009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return This Builder object to allow for chaining of calls to set methods 4019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Builder setTitle(int titleId) { 4039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mTitle = P.mContext.getText(titleId); 4049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this; 4059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set the title displayed in the {@link Dialog}. 4099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 4109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return This Builder object to allow for chaining of calls to set methods 4119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Builder setTitle(CharSequence title) { 4139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mTitle = title; 4149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this; 4159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set the title using the custom view {@code customTitleView}. The 4199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * methods {@link #setTitle(int)} and {@link #setIcon(int)} should be 4209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * sufficient for most titles, but this is provided if the title needs 4219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * more customization. Using this will replace the title and icon set 4229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * via the other methods. 4239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 4249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param customTitleView The custom view to use as the title. 4259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 4269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return This Builder object to allow for chaining of calls to set methods 4279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Builder setCustomTitle(View customTitleView) { 4299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mCustomTitleView = customTitleView; 4309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this; 4319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set the message to display using the given resource id. 4359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 4369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return This Builder object to allow for chaining of calls to set methods 4379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Builder setMessage(int messageId) { 4399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mMessage = P.mContext.getText(messageId); 4409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this; 4419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set the message to display. 4459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 4469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return This Builder object to allow for chaining of calls to set methods 4479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Builder setMessage(CharSequence message) { 4499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mMessage = message; 4509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this; 4519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set the resource id of the {@link Drawable} to be used in the title. 4559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 4569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return This Builder object to allow for chaining of calls to set methods 4579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Builder setIcon(int iconId) { 4599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mIconId = iconId; 4609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this; 4619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set the {@link Drawable} to be used in the title. 4659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 4669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return This Builder object to allow for chaining of calls to set methods 4679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Builder setIcon(Drawable icon) { 4699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mIcon = icon; 4709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this; 4719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 472947f7824118f0e9b642df8760a8725a7eda59318Adam Powell 473947f7824118f0e9b642df8760a8725a7eda59318Adam Powell /** 474947f7824118f0e9b642df8760a8725a7eda59318Adam Powell * Set an icon as supplied by a theme attribute. e.g. android.R.attr.alertDialogIcon 475947f7824118f0e9b642df8760a8725a7eda59318Adam Powell * 476947f7824118f0e9b642df8760a8725a7eda59318Adam Powell * @param attrId ID of a theme attribute that points to a drawable resource. 477947f7824118f0e9b642df8760a8725a7eda59318Adam Powell */ 478947f7824118f0e9b642df8760a8725a7eda59318Adam Powell public Builder setIconAttribute(int attrId) { 479947f7824118f0e9b642df8760a8725a7eda59318Adam Powell TypedValue out = new TypedValue(); 480947f7824118f0e9b642df8760a8725a7eda59318Adam Powell P.mContext.getTheme().resolveAttribute(attrId, out, true); 481947f7824118f0e9b642df8760a8725a7eda59318Adam Powell P.mIconId = out.resourceId; 482947f7824118f0e9b642df8760a8725a7eda59318Adam Powell return this; 483947f7824118f0e9b642df8760a8725a7eda59318Adam Powell } 484947f7824118f0e9b642df8760a8725a7eda59318Adam Powell 4859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set a listener to be invoked when the positive button of the dialog is pressed. 4879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param textId The resource id of the text to display in the positive button 4889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param listener The {@link DialogInterface.OnClickListener} to use. 4899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 4909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return This Builder object to allow for chaining of calls to set methods 4919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Builder setPositiveButton(int textId, final OnClickListener listener) { 4939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mPositiveButtonText = P.mContext.getText(textId); 4949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mPositiveButtonListener = listener; 4959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this; 4969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set a listener to be invoked when the positive button of the dialog is pressed. 5009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param text The text to display in the positive button 5019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param listener The {@link DialogInterface.OnClickListener} to use. 5029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 5039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return This Builder object to allow for chaining of calls to set methods 5049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Builder setPositiveButton(CharSequence text, final OnClickListener listener) { 5069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mPositiveButtonText = text; 5079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mPositiveButtonListener = listener; 5089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this; 5099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set a listener to be invoked when the negative button of the dialog is pressed. 5139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param textId The resource id of the text to display in the negative button 5149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param listener The {@link DialogInterface.OnClickListener} to use. 5159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 5169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return This Builder object to allow for chaining of calls to set methods 5179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Builder setNegativeButton(int textId, final OnClickListener listener) { 5199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mNegativeButtonText = P.mContext.getText(textId); 5209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mNegativeButtonListener = listener; 5219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this; 5229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set a listener to be invoked when the negative button of the dialog is pressed. 5269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param text The text to display in the negative button 5279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param listener The {@link DialogInterface.OnClickListener} to use. 5289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 5299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return This Builder object to allow for chaining of calls to set methods 5309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Builder setNegativeButton(CharSequence text, final OnClickListener listener) { 5329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mNegativeButtonText = text; 5339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mNegativeButtonListener = listener; 5349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this; 5359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set a listener to be invoked when the neutral button of the dialog is pressed. 5399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param textId The resource id of the text to display in the neutral button 5409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param listener The {@link DialogInterface.OnClickListener} to use. 5419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 5429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return This Builder object to allow for chaining of calls to set methods 5439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Builder setNeutralButton(int textId, final OnClickListener listener) { 5459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mNeutralButtonText = P.mContext.getText(textId); 5469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mNeutralButtonListener = listener; 5479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this; 5489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set a listener to be invoked when the neutral button of the dialog is pressed. 5529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param text The text to display in the neutral button 5539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param listener The {@link DialogInterface.OnClickListener} to use. 5549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 5559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return This Builder object to allow for chaining of calls to set methods 5569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Builder setNeutralButton(CharSequence text, final OnClickListener listener) { 5589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mNeutralButtonText = text; 5599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mNeutralButtonListener = listener; 5609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this; 5619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 56469ea4e15e52c456537575d21443ac1efdb03a902Brad Fitzpatrick * Sets whether the dialog is cancelable or not. Default is true. 5659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 5669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return This Builder object to allow for chaining of calls to set methods 5679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Builder setCancelable(boolean cancelable) { 5699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mCancelable = cancelable; 5709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this; 5719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Sets the callback that will be called if the dialog is canceled. 5757f02dc5c9c48a01bec459b71ac73a6ad37b9e12cAdam Powell * 5767f02dc5c9c48a01bec459b71ac73a6ad37b9e12cAdam Powell * <p>Even in a cancelable dialog, the dialog may be dismissed for reasons other than 5777f02dc5c9c48a01bec459b71ac73a6ad37b9e12cAdam Powell * being canceled or one of the supplied choices being selected. 5787f02dc5c9c48a01bec459b71ac73a6ad37b9e12cAdam Powell * If you are interested in listening for all cases where the dialog is dismissed 5797f02dc5c9c48a01bec459b71ac73a6ad37b9e12cAdam Powell * and not just when it is canceled, see 5807f02dc5c9c48a01bec459b71ac73a6ad37b9e12cAdam Powell * {@link #setOnDismissListener(android.content.DialogInterface.OnDismissListener) setOnDismissListener}.</p> 5819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #setCancelable(boolean) 5827f02dc5c9c48a01bec459b71ac73a6ad37b9e12cAdam Powell * @see #setOnDismissListener(android.content.DialogInterface.OnDismissListener) 5839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 5849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return This Builder object to allow for chaining of calls to set methods 5859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Builder setOnCancelListener(OnCancelListener onCancelListener) { 5879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mOnCancelListener = onCancelListener; 5889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this; 5899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5927f02dc5c9c48a01bec459b71ac73a6ad37b9e12cAdam Powell * Sets the callback that will be called when the dialog is dismissed for any reason. 5937f02dc5c9c48a01bec459b71ac73a6ad37b9e12cAdam Powell * 5947f02dc5c9c48a01bec459b71ac73a6ad37b9e12cAdam Powell * @return This Builder object to allow for chaining of calls to set methods 5957f02dc5c9c48a01bec459b71ac73a6ad37b9e12cAdam Powell */ 5967f02dc5c9c48a01bec459b71ac73a6ad37b9e12cAdam Powell public Builder setOnDismissListener(OnDismissListener onDismissListener) { 5977f02dc5c9c48a01bec459b71ac73a6ad37b9e12cAdam Powell P.mOnDismissListener = onDismissListener; 5987f02dc5c9c48a01bec459b71ac73a6ad37b9e12cAdam Powell return this; 5997f02dc5c9c48a01bec459b71ac73a6ad37b9e12cAdam Powell } 6007f02dc5c9c48a01bec459b71ac73a6ad37b9e12cAdam Powell 6017f02dc5c9c48a01bec459b71ac73a6ad37b9e12cAdam Powell /** 6029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Sets the callback that will be called if a key is dispatched to the dialog. 6039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 6049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return This Builder object to allow for chaining of calls to set methods 6059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 6069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Builder setOnKeyListener(OnKeyListener onKeyListener) { 6079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mOnKeyListener = onKeyListener; 6089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this; 6099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 6129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set a list of items to be displayed in the dialog as the content, you will be notified of the 6139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * selected item via the supplied listener. This should be an array type i.e. R.array.foo 6149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 6159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return This Builder object to allow for chaining of calls to set methods 6169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 6179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Builder setItems(int itemsId, final OnClickListener listener) { 6189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mItems = P.mContext.getResources().getTextArray(itemsId); 6199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mOnClickListener = listener; 6209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this; 6219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 6249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set a list of items to be displayed in the dialog as the content, you will be notified of the 6259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * selected item via the supplied listener. 6269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 6279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return This Builder object to allow for chaining of calls to set methods 6289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 6299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Builder setItems(CharSequence[] items, final OnClickListener listener) { 6309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mItems = items; 6319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mOnClickListener = listener; 6329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this; 6339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 6369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set a list of items, which are supplied by the given {@link ListAdapter}, to be 6379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * displayed in the dialog as the content, you will be notified of the 6389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * selected item via the supplied listener. 6399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 6409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param adapter The {@link ListAdapter} to supply the list of items 6419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param listener The listener that will be called when an item is clicked. 6429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 6439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return This Builder object to allow for chaining of calls to set methods 6449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 6459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Builder setAdapter(final ListAdapter adapter, final OnClickListener listener) { 6469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mAdapter = adapter; 6479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mOnClickListener = listener; 6489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this; 6499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 6529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set a list of items, which are supplied by the given {@link Cursor}, to be 6539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * displayed in the dialog as the content, you will be notified of the 6549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * selected item via the supplied listener. 6559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 6569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param cursor The {@link Cursor} to supply the list of items 6579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param listener The listener that will be called when an item is clicked. 6589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param labelColumn The column name on the cursor containing the string to display 6599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * in the label. 6609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 6619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return This Builder object to allow for chaining of calls to set methods 6629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 6639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Builder setCursor(final Cursor cursor, final OnClickListener listener, 6649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String labelColumn) { 6659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mCursor = cursor; 6669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mLabelColumn = labelColumn; 6679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mOnClickListener = listener; 6689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this; 6699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 6729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set a list of items to be displayed in the dialog as the content, 6739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you will be notified of the selected item via the supplied listener. 6749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * This should be an array type, e.g. R.array.foo. The list will have 6759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * a check mark displayed to the right of the text for each checked 6769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * item. Clicking on an item in the list will not dismiss the dialog. 6779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Clicking on a button will dismiss the dialog. 6789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 6799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param itemsId the resource id of an array i.e. R.array.foo 6809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param checkedItems specifies which items are checked. It should be null in which case no 6819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * items are checked. If non null it must be exactly the same length as the array of 6829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * items. 6839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param listener notified when an item on the list is clicked. The dialog will not be 6849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * dismissed when an item is clicked. It will only be dismissed if clicked on a 6859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * button, if no buttons are supplied it's up to the user to dismiss the dialog. 6869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 6879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return This Builder object to allow for chaining of calls to set methods 6889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 6899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Builder setMultiChoiceItems(int itemsId, boolean[] checkedItems, 6909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final OnMultiChoiceClickListener listener) { 6919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mItems = P.mContext.getResources().getTextArray(itemsId); 6929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mOnCheckboxClickListener = listener; 6939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mCheckedItems = checkedItems; 6949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mIsMultiChoice = true; 6959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this; 6969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 6999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set a list of items to be displayed in the dialog as the content, 7009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you will be notified of the selected item via the supplied listener. 7019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The list will have a check mark displayed to the right of the text 7029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * for each checked item. Clicking on an item in the list will not 7039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * dismiss the dialog. Clicking on a button will dismiss the dialog. 7049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 7059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param items the text of the items to be displayed in the list. 7069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param checkedItems specifies which items are checked. It should be null in which case no 7079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * items are checked. If non null it must be exactly the same length as the array of 7089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * items. 7099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param listener notified when an item on the list is clicked. The dialog will not be 7109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * dismissed when an item is clicked. It will only be dismissed if clicked on a 7119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * button, if no buttons are supplied it's up to the user to dismiss the dialog. 7129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 7139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return This Builder object to allow for chaining of calls to set methods 7149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 7159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Builder setMultiChoiceItems(CharSequence[] items, boolean[] checkedItems, 7169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final OnMultiChoiceClickListener listener) { 7179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mItems = items; 7189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mOnCheckboxClickListener = listener; 7199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mCheckedItems = checkedItems; 7209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mIsMultiChoice = true; 7219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this; 7229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set a list of items to be displayed in the dialog as the content, 7269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you will be notified of the selected item via the supplied listener. 7279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The list will have a check mark displayed to the right of the text 7289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * for each checked item. Clicking on an item in the list will not 7299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * dismiss the dialog. Clicking on a button will dismiss the dialog. 7309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 7319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param cursor the cursor used to provide the items. 7329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param isCheckedColumn specifies the column name on the cursor to use to determine 7339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * whether a checkbox is checked or not. It must return an integer value where 1 7349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * means checked and 0 means unchecked. 7359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param labelColumn The column name on the cursor containing the string to display in the 7369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * label. 7379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param listener notified when an item on the list is clicked. The dialog will not be 7389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * dismissed when an item is clicked. It will only be dismissed if clicked on a 7399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * button, if no buttons are supplied it's up to the user to dismiss the dialog. 7409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 7419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return This Builder object to allow for chaining of calls to set methods 7429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 7439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Builder setMultiChoiceItems(Cursor cursor, String isCheckedColumn, String labelColumn, 7449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final OnMultiChoiceClickListener listener) { 7459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mCursor = cursor; 7469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mOnCheckboxClickListener = listener; 7479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mIsCheckedColumn = isCheckedColumn; 7489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mLabelColumn = labelColumn; 7499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mIsMultiChoice = true; 7509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this; 7519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set a list of items to be displayed in the dialog as the content, you will be notified of 7559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the selected item via the supplied listener. This should be an array type i.e. 7569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * R.array.foo The list will have a check mark displayed to the right of the text for the 7579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * checked item. Clicking on an item in the list will not dismiss the dialog. Clicking on a 7589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * button will dismiss the dialog. 7599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 7609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param itemsId the resource id of an array i.e. R.array.foo 7619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param checkedItem specifies which item is checked. If -1 no items are checked. 7629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param listener notified when an item on the list is clicked. The dialog will not be 7639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * dismissed when an item is clicked. It will only be dismissed if clicked on a 7649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * button, if no buttons are supplied it's up to the user to dismiss the dialog. 7659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 7669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return This Builder object to allow for chaining of calls to set methods 7679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 7689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Builder setSingleChoiceItems(int itemsId, int checkedItem, 7699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final OnClickListener listener) { 7709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mItems = P.mContext.getResources().getTextArray(itemsId); 7719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mOnClickListener = listener; 7729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mCheckedItem = checkedItem; 7739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mIsSingleChoice = true; 7749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this; 7759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set a list of items to be displayed in the dialog as the content, you will be notified of 7799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the selected item via the supplied listener. The list will have a check mark displayed to 7809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the right of the text for the checked item. Clicking on an item in the list will not 7819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * dismiss the dialog. Clicking on a button will dismiss the dialog. 7829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 7839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param cursor the cursor to retrieve the items from. 7849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param checkedItem specifies which item is checked. If -1 no items are checked. 7859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param labelColumn The column name on the cursor containing the string to display in the 7869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * label. 7879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param listener notified when an item on the list is clicked. The dialog will not be 7889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * dismissed when an item is clicked. It will only be dismissed if clicked on a 7899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * button, if no buttons are supplied it's up to the user to dismiss the dialog. 7909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 7919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return This Builder object to allow for chaining of calls to set methods 7929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 7939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Builder setSingleChoiceItems(Cursor cursor, int checkedItem, String labelColumn, 7949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final OnClickListener listener) { 7959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mCursor = cursor; 7969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mOnClickListener = listener; 7979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mCheckedItem = checkedItem; 7989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mLabelColumn = labelColumn; 7999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mIsSingleChoice = true; 8009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this; 8019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 8029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 8049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set a list of items to be displayed in the dialog as the content, you will be notified of 8059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the selected item via the supplied listener. The list will have a check mark displayed to 8069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the right of the text for the checked item. Clicking on an item in the list will not 8079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * dismiss the dialog. Clicking on a button will dismiss the dialog. 8089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 8099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param items the items to be displayed. 8109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param checkedItem specifies which item is checked. If -1 no items are checked. 8119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param listener notified when an item on the list is clicked. The dialog will not be 8129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * dismissed when an item is clicked. It will only be dismissed if clicked on a 8139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * button, if no buttons are supplied it's up to the user to dismiss the dialog. 8149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 8159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return This Builder object to allow for chaining of calls to set methods 8169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 8179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Builder setSingleChoiceItems(CharSequence[] items, int checkedItem, final OnClickListener listener) { 8189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mItems = items; 8199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mOnClickListener = listener; 8209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mCheckedItem = checkedItem; 8219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mIsSingleChoice = true; 8229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this; 8239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 8249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 8269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set a list of items to be displayed in the dialog as the content, you will be notified of 8279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the selected item via the supplied listener. The list will have a check mark displayed to 8289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the right of the text for the checked item. Clicking on an item in the list will not 8299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * dismiss the dialog. Clicking on a button will dismiss the dialog. 8309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 8319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param adapter The {@link ListAdapter} to supply the list of items 8329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param checkedItem specifies which item is checked. If -1 no items are checked. 8339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param listener notified when an item on the list is clicked. The dialog will not be 8349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * dismissed when an item is clicked. It will only be dismissed if clicked on a 8359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * button, if no buttons are supplied it's up to the user to dismiss the dialog. 8369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 8379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return This Builder object to allow for chaining of calls to set methods 8389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 8399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Builder setSingleChoiceItems(ListAdapter adapter, int checkedItem, final OnClickListener listener) { 8409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mAdapter = adapter; 8419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mOnClickListener = listener; 8429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mCheckedItem = checkedItem; 8439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mIsSingleChoice = true; 8449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this; 8459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 8469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 8489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Sets a listener to be invoked when an item in the list is selected. 8499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 8509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param listener The listener to be invoked. 8519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see AdapterView#setOnItemSelectedListener(android.widget.AdapterView.OnItemSelectedListener) 8529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 8539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return This Builder object to allow for chaining of calls to set methods 8549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 8559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Builder setOnItemSelectedListener(final AdapterView.OnItemSelectedListener listener) { 8569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mOnItemSelectedListener = listener; 8579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this; 8589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 8599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 861ec186706df72fbb62bfe813d83cff9167dd95cb4Alan Viverette * Set a custom view resource to be the contents of the Dialog. The 862ec186706df72fbb62bfe813d83cff9167dd95cb4Alan Viverette * resource will be inflated, adding all top-level views to the screen. 863ec186706df72fbb62bfe813d83cff9167dd95cb4Alan Viverette * 864ec186706df72fbb62bfe813d83cff9167dd95cb4Alan Viverette * @param layoutResId Resource ID to be inflated. 865ec186706df72fbb62bfe813d83cff9167dd95cb4Alan Viverette * @return This Builder object to allow for chaining of calls to set 866ec186706df72fbb62bfe813d83cff9167dd95cb4Alan Viverette * methods 867ec186706df72fbb62bfe813d83cff9167dd95cb4Alan Viverette */ 868ec186706df72fbb62bfe813d83cff9167dd95cb4Alan Viverette public Builder setView(int layoutResId) { 869ec186706df72fbb62bfe813d83cff9167dd95cb4Alan Viverette P.mView = null; 870ec186706df72fbb62bfe813d83cff9167dd95cb4Alan Viverette P.mViewLayoutResId = layoutResId; 871ec186706df72fbb62bfe813d83cff9167dd95cb4Alan Viverette P.mViewSpacingSpecified = false; 872ec186706df72fbb62bfe813d83cff9167dd95cb4Alan Viverette return this; 873ec186706df72fbb62bfe813d83cff9167dd95cb4Alan Viverette } 874ec186706df72fbb62bfe813d83cff9167dd95cb4Alan Viverette 875ec186706df72fbb62bfe813d83cff9167dd95cb4Alan Viverette /** 8769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set a custom view to be the contents of the Dialog. If the supplied view is an instance 8779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * of a {@link ListView} the light background will be used. 8789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 8799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param view The view to use as the contents of the Dialog. 8809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 8819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return This Builder object to allow for chaining of calls to set methods 8829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 8839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Builder setView(View view) { 8849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mView = view; 885ec186706df72fbb62bfe813d83cff9167dd95cb4Alan Viverette P.mViewLayoutResId = 0; 8869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mViewSpacingSpecified = false; 8879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this; 8889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 8899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 8919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set a custom view to be the contents of the Dialog, specifying the 8929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * spacing to appear around that view. If the supplied view is an 8939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * instance of a {@link ListView} the light background will be used. 8949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 8959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param view The view to use as the contents of the Dialog. 8969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param viewSpacingLeft Spacing between the left edge of the view and 8979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the dialog frame 8989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param viewSpacingTop Spacing between the top edge of the view and 8999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the dialog frame 9009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param viewSpacingRight Spacing between the right edge of the view 9019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * and the dialog frame 9029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param viewSpacingBottom Spacing between the bottom edge of the view 9039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * and the dialog frame 9049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return This Builder object to allow for chaining of calls to set 9059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * methods 9069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 907935ae463d495d41155e27feb849768ad2b8b16dbDianne Hackborn * 908935ae463d495d41155e27feb849768ad2b8b16dbDianne Hackborn * This is currently hidden because it seems like people should just 909935ae463d495d41155e27feb849768ad2b8b16dbDianne Hackborn * be able to put padding around the view. 910935ae463d495d41155e27feb849768ad2b8b16dbDianne Hackborn * @hide 9119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 9129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Builder setView(View view, int viewSpacingLeft, int viewSpacingTop, 9139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int viewSpacingRight, int viewSpacingBottom) { 9149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mView = view; 915ec186706df72fbb62bfe813d83cff9167dd95cb4Alan Viverette P.mViewLayoutResId = 0; 9169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mViewSpacingSpecified = true; 9179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mViewSpacingLeft = viewSpacingLeft; 9189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mViewSpacingTop = viewSpacingTop; 9199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mViewSpacingRight = viewSpacingRight; 9209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mViewSpacingBottom = viewSpacingBottom; 9219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this; 9229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 9259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Sets the Dialog to use the inverse background, regardless of what the 9269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * contents is. 9279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 9289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param useInverseBackground Whether to use the inverse background 9299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 9309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return This Builder object to allow for chaining of calls to set methods 9319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 9329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Builder setInverseBackgroundForced(boolean useInverseBackground) { 9339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mForceInverseBackground = useInverseBackground; 9349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this; 9359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9369c802c1e95befbd8de30ea4ebc48ae05cb948b2bRomain Guy 9379c802c1e95befbd8de30ea4ebc48ae05cb948b2bRomain Guy /** 9389c802c1e95befbd8de30ea4ebc48ae05cb948b2bRomain Guy * @hide 9399c802c1e95befbd8de30ea4ebc48ae05cb948b2bRomain Guy */ 9409c802c1e95befbd8de30ea4ebc48ae05cb948b2bRomain Guy public Builder setRecycleOnMeasureEnabled(boolean enabled) { 9419c802c1e95befbd8de30ea4ebc48ae05cb948b2bRomain Guy P.mRecycleOnMeasure = enabled; 9429c802c1e95befbd8de30ea4ebc48ae05cb948b2bRomain Guy return this; 9439c802c1e95befbd8de30ea4ebc48ae05cb948b2bRomain Guy } 9449c802c1e95befbd8de30ea4ebc48ae05cb948b2bRomain Guy 9459c802c1e95befbd8de30ea4ebc48ae05cb948b2bRomain Guy 9469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 9479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Creates a {@link AlertDialog} with the arguments supplied to this builder. It does not 9489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link Dialog#show()} the dialog. This allows the user to do any extra processing 9499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * before displaying the dialog. Use {@link #show()} if you don't have any other processing 9509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * to do and want this to be created and displayed. 9519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 9529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public AlertDialog create() { 953e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn final AlertDialog dialog = new AlertDialog(P.mContext, mTheme, false); 9549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.apply(dialog.mAlert); 955fbca76965b96b31a8974e461ee1929867ef3327bAdam Powell dialog.setCancelable(P.mCancelable); 956fbca76965b96b31a8974e461ee1929867ef3327bAdam Powell if (P.mCancelable) { 957fbca76965b96b31a8974e461ee1929867ef3327bAdam Powell dialog.setCanceledOnTouchOutside(true); 958fbca76965b96b31a8974e461ee1929867ef3327bAdam Powell } 9599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dialog.setOnCancelListener(P.mOnCancelListener); 9607f02dc5c9c48a01bec459b71ac73a6ad37b9e12cAdam Powell dialog.setOnDismissListener(P.mOnDismissListener); 9619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (P.mOnKeyListener != null) { 9629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dialog.setOnKeyListener(P.mOnKeyListener); 9639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return dialog; 9659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 9689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Creates a {@link AlertDialog} with the arguments supplied to this builder and 9699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link Dialog#show()}'s the dialog. 9709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 9719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public AlertDialog show() { 9729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project AlertDialog dialog = create(); 9739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dialog.show(); 9749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return dialog; 9759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 979