title: how Create setAdapter() for a AlertDialog
body: <p>I created a <code>CustomDialogBuilder</code> that extends <code>Dialog</code>... I want to create the method <code>setApater()</code>.. I created that section but the <code>onClick</code> method on the adapter is not working..</p>
  
  <p>My <code>customDialogBuilder</code> class is given below.</p>
  
  <pre><code>public class CustomAlertDialog extends Dialog 
  {
      public CustomAlertDialog(Context c, int theme) {
          super(c, theme);
      }
      public static class Builder 
      {
          private Context context;
          private String title;
          private String message;
          private String positiveButtonText;
          private String negativeButtonText;
          private View contentView;
          private ListAdapter adapter;
          private  ListView listView;
          private DialogInterface.OnClickListener 
                          positiveButtonClickListener,
                          negativeButtonClickListener,adapterListener;
          public Builder(Context c)
          {
              context =c;
          }
          public Builder setTitle(String title)
          {
              this.title =title;
              return this;
          }
          public Builder setMessage(String message) {
              this.message = message;
              return this;
          }
          public Builder setContentView(View v)
          {
              contentView =v;
              return this;
          }
          public Builder setAdapter(ListAdapter adapter,DialogInterface.OnClickListener listener)
          {
              this.adapter=adapter;
              return this;
          }
          public Builder setPositiveButton(String positiveButtonText,
                  DialogInterface.OnClickListener listener) {
              this.positiveButtonText = positiveButtonText;
              this.positiveButtonClickListener = listener;
              return this;
          }
          public Builder setNegativeButton(String negativeButtonText,
                  DialogInterface.OnClickListener listener) {
              this.negativeButtonText = negativeButtonText;
              this.negativeButtonClickListener = listener;
              return this;
          }
          public CustomAlertDialog create()
          {
              LayoutInflater inflater = (LayoutInflater) context
                      .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
              final CustomAlertDialog dialog = new CustomAlertDialog(context, 
                      R.style.Dialog);
              View layout = inflater.inflate(R.layout.dialog_title_layout, null);
              dialog.addContentView(layout, new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));
              ((TextView) layout.findViewById(R.id.tv_custom_dialog_title)).setText(title);
              if (positiveButtonText != null) {
                  ((Button) layout.findViewById(R.id.bt_custom_dialog_positive))
                          .setText(positiveButtonText);
                  if (positiveButtonClickListener != null) {
                      ((Button) layout.findViewById(R.id.bt_custom_dialog_positive))
                              .setOnClickListener(new View.OnClickListener() {
                                  public void onClick(View v) {
                                      positiveButtonClickListener.onClick(
                                              dialog, 
                                              DialogInterface.BUTTON_POSITIVE);
                                  }
                              });
                  }
              }
              else
                  layout.findViewById(R.id.bt_custom_dialog_positive).setVisibility(
                          View.GONE);
               if (negativeButtonText != null) {
                   ((Button) layout.findViewById(R.id.bt_custom_dialog_negative))
                           .setText(negativeButtonText);
                   if (negativeButtonClickListener != null) {
                       ((Button) layout.findViewById(R.id.bt_custom_dialog_negative))
                               .setOnClickListener(new View.OnClickListener() {
                                   public void onClick(View v) {
                                       positiveButtonClickListener.onClick(
                                              dialog, 
                                               DialogInterface.BUTTON_NEGATIVE);
                                   }
                               });
                   }
               } else {
                   // if no confirm button just set the visibility to GONE
                   layout.findViewById(R.id.bt_custom_dialog_negative).setVisibility(
                           View.GONE);
               }
               if (message != null) {
                   ((TextView) layout.findViewById(
                          R.id.tv_custom_dilaog_message)).setText(message);
               }
               else if(adapter!=null)
               {
                   listView = new ListView(context);
                   listView.setAdapter(adapter);
                   ((LinearLayout) layout.findViewById(R.id.Layout_custom_dialog_content))
                   .removeAllViews();
           ((LinearLayout) layout.findViewById(R.id.Layout_custom_dialog_content))
           .addView(listView);
           if(adapterListener!=null)
           {
               listView.setOnItemClickListener(new OnItemClickListener() {
  
                  public void onItemClick(AdapterView&lt;?&gt; arg0, View arg1,
                          int arg2, long arg3) {
  
  
                  }
              });
           }
  
               }
               else if (contentView != null) {
                   // if no message set
                   // add the contentView to the dialog body
                   ((LinearLayout) layout.findViewById(R.id.Layout_custom_dialog_content))
                           .removeAllViews();
                   ((LinearLayout) layout.findViewById(R.id.Layout_custom_dialog_content))
                           .addView(contentView, 
                                   new LayoutParams(
                                           LayoutParams.WRAP_CONTENT, 
                                           LayoutParams.WRAP_CONTENT));
               }
              return dialog;
          }
      }
  }
  </code></pre>
  
  <p>how we can create the correct <code>setAdapter()</code> which is similar to <code>setAdapter()</code> in <code>AlertDialog</code>.</p>
  
  <p>This is how I create dialog using this class:</p>
  
  <pre><code>Dialog dialog = null;
                      String[] items = {"Edit profile","Change doctor","Change password","Logout"};
                      ArrayAdapter&lt;String&gt; adapter = new ArrayAdapter&lt;String&gt;(Loged.this,
                              R.layout.my_spinner_layout, items);
  
                  CustomAlertDialog.Builder customBuilder = new
                          CustomAlertDialog.Builder(Loged.this);
                      customBuilder.setTitle("Options")
                         .setAdapter(adapter, new DialogInterface.OnClickListener() {
  
                          public void onClick(DialogInterface dialog, int which) {
                              Log.e("dis",""+which);
  
                          }
                      });
                      dialog = customBuilder.create();
                      dialog.show();
  </code></pre>