我创建了一个扩展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
答案 0 :(得分:3)
hureyyy ......得到了答案........
更改CustomDialog类中的setAdapter函数... as
public Builder setAdapter(ListAdapter adapter,DialogInterface.OnClickListener listener)
{
this.adapter=adapter;
this.adapterListener=listener;
return this;
}