如何为AlertDialog创建setAdapter()

时间:2013-05-14 07:36:30

标签: android android-arrayadapter alertdialog

我创建了一个扩展CustomDialogBuilder的{​​{1}} ...我想创建方法Dialog ..我创建了该部分,但适配器上的setApater()方法是不工作..

我的onClick课程如下。

customDialogBuilder

我们如何在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<?> 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; } } } 中创建与setAdapter()类似的正确setAdapter()

这是我使用这个类创建对话框的方法:

AlertDialog

1 个答案:

答案 0 :(得分:3)

hureyyy ......得到了答案........

更改CustomDialog类中的setAdapter函数... as

public Builder setAdapter(ListAdapter adapter,DialogInterface.OnClickListener listener)
        {
            this.adapter=adapter;
            this.adapterListener=listener;
            return this;
        }