android 实用工具类-对话框

import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import com.suntek.mway.gototravel.R;
import com.suntek.mway.gototravel.adapter.SingleChoiceAdapter;
import com.suntek.mway.gototravel.interfaces.OnAlertDialogOKListener;
import com.suntek.mway.gototravel.interfaces.OnEditDialogDoneListener;
import com.suntek.mway.gototravel.interfaces.OnListDialogItemListener;

public class AlertDialogUtil {
    /**
     * 显示自定义内容的确定取消对话框
     * 
     * @param context
     * @param title
     * @param content
     * @param ok 确认按钮文字资源id,为0时默认是“确认”,小于0则不显示该按钮
     * @param cancel 取消按钮文字资源id,为0时默认是“取消”,小于0则不显示该按钮
     * @param listener
     */
    public static void showOKCancel(final Context context,
            final String title,
            final String content,
            final int ok,
            final int cancel,
            final OnAlertDialogOKListener listener) {
        final AlertDialog dialog = new AlertDialog.Builder(context).create();
        dialog.show();

        LayoutInflater inflater = LayoutInflater.from(context);
        View view = inflater.inflate(R.layout.alert_ok_cancel, null);
        TextView textTitle = (TextView) view.findViewById(R.id.title);
        TextView textMsg = (TextView) view.findViewById(R.id.message);
        Button btnOK = (Button) view.findViewById(R.id.ok);
        Button btnCancel = (Button) view.findViewById(R.id.cancel);
        textTitle.setText(title);
        textMsg.setText(content);
        if (ok > 0) {
            btnOK.setText(ok);
        }
        if (ok >= 0) {
            btnOK.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    dialog.dismiss();
                    if (listener != null) {
                        listener.onOK();
                    }
                }
            });
        } else if (ok < 0) {
            btnOK.setVisibility(View.GONE);
        }
        if (cancel > 0) {
            btnCancel.setText(cancel);
        }
        if (cancel >= 0) {
            if (ok < 0 && listener != null) {
                btnCancel.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        dialog.dismiss();
                        listener.onOK();
                    }
                });
            } else {
                btnCancel.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        dialog.dismiss();
                    }
                });
            }
        } else if (cancel < 0) {
            btnCancel.setVisibility(View.GONE);
        }

        dialog.getWindow().setContentView(view);
    }

    /**
     * 显示只带有一个确认按钮的自定义对话框
     * 
     * @param context
     * @param title
     * @param content
     * @param ok 确认按钮文字资源id,为0时默认是“确认”
     * @param listener
     */
    public static void showOK(final Context context,
            final String title,
            final String content,
            final int ok,
            final OnAlertDialogOKListener listener) {
        showOKCancel(context, title, content, ok, -1, listener);
    }

    /**
     * 显示只带有一个确认按钮的自定义对话框
     * 
     * @param context
     * @param title
     * @param content
     * @param cancel 取消按钮文字资源id,为0时默认是“取消”
     * @param listener
     */
    public static void showCancel(final Context context,
            final String title,
            final String content,
            final int cancel,
            final OnAlertDialogOKListener listener) {
        showOKCancel(context, title, content, -1, cancel, listener);
    }

    /**
     * 显示自定义view的确定取消对话框
     * 
     * @param context
     * @param title
     * @param customView
     * @param ok 确认按钮文字资源id,为0时默认是“确认”
     * @param cancel 取消按钮文字资源id,为0时默认是“取消”
     * @param listener
     */
    public static void showViewOKCancel(final Context context,
            final String title,
            final View customView,
            final int ok,
            final int cancel,
            final OnAlertDialogOKListener listener) {
        final AlertDialog dialog = new AlertDialog.Builder(context).create();
        dialog.show();

        LayoutInflater inflater = LayoutInflater.from(context);
        View view = inflater.inflate(R.layout.alert_custom_view_ok_cancel, null);
        LinearLayout layout = (LinearLayout) view.findViewById(R.id.layout);
        layout.addView(customView);
        Button btnOK = (Button) view.findViewById(R.id.ok);
        Button btnCancel = (Button) view.findViewById(R.id.cancel);
        if (ok > 0) {
            btnOK.setText(ok);
        }
        if (ok >= 0) {
            btnOK.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    dialog.dismiss();
                    if (listener != null) {
                        listener.onOK();
                    }
                }
            });
        } else if (ok < 0) {
            btnOK.setVisibility(View.GONE);
        }
        if (cancel > 0) {
            btnCancel.setText(cancel);
        }
        if (cancel >= 0) {
            if (ok < 0 && listener != null) {
                btnCancel.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        dialog.dismiss();
                        listener.onOK();
                    }
                });
            } else {
                btnCancel.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        dialog.dismiss();
                    }
                });
            }
        } else if (cancel < 0) {
            btnCancel.setVisibility(View.GONE);
        }

        dialog.getWindow().setContentView(view);
    }

    /**
     * 显示带有确认按钮的自定义view对话框
     * 
     * @param context
     * @param title
     * @param customView
     * @param ok 确认按钮文字资源id,为0时默认是“确认”
     * @param listener
     */
    public static void showViewOK(final Context context,
            final String title,
            final View customView,
            final int ok,
            final OnAlertDialogOKListener listener) {
        showViewOKCancel(context, title, customView, ok, -1, listener);
    }

    /**
     * 显示自定义view对话框
     * 
     * @param context
     * @param title
     * @param customView
     */
    public static void showView(final Context context,
            final String title,
            final View customView) {
        showViewOKCancel(context, title, customView, -1, -1, null);
    }

    /**
     * 显示列表单选确认对话框
     * 
     * @param context
     * @param title
     * @param cancel
     * @param adapter
     * @param listener
     */
    public static void showSingleChoiceListDialog(final Context context,
            final String title,
            final int ok,
            final int cancel,
            final SingleChoiceAdapter adapter,
            final OnListDialogItemListener listener) {
        final AlertDialog dialog = new AlertDialog.Builder(context).create();
        dialog.show();

        LayoutInflater inflater = LayoutInflater.from(context);
        View view = inflater.inflate(R.layout.alert_single_choice_list, null);
        TextView textTitle = (TextView) view.findViewById(R.id.title);
        ListView list = (ListView) view.findViewById(R.id.list);
        Button btnOK = (Button) view.findViewById(R.id.ok);
        Button btnCancel = (Button) view.findViewById(R.id.cancel);
        textTitle.setText(title);
        if (ok > 0) {
            btnOK.setText(ok);
        } else if (ok < 0) {
            btnOK.setVisibility(View.GONE);
        }
        if (cancel > 0) {
            btnCancel.setText(cancel);
        } else if (cancel < 0) {
            btnCancel.setVisibility(View.GONE);
        }
        btnCancel.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                dialog.dismiss();
            }
        });
        btnOK.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                dialog.dismiss();
                listener.onItemClick(adapter.getCheckItem());
            }
        });

        list.setAdapter(adapter);
        list.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView arg0, View arg1, int arg2, long arg3) {
                // dialog.dismiss();
                // listener.onItemClick(arg2);
                adapter.setCheckItem(arg2);
            }
        });

        dialog.getWindow().setContentView(view);
    }

    /**
     * 显示列表选择对话框
     * 
     * @param context
     * @param title
     * @param cancel
     * @param adapter
     * @param listener
     */
    public static void showListDialog(final Context context,
            final String title,
            final int cancel,
            final BaseAdapter adapter,
            final OnListDialogItemListener listener) {
        final AlertDialog dialog = new AlertDialog.Builder(context).create();
        dialog.show();

        LayoutInflater inflater = LayoutInflater.from(context);
        View view = inflater.inflate(R.layout.alert_list, null);
        TextView textTitle = (TextView) view.findViewById(R.id.title);
        ListView list = (ListView) view.findViewById(R.id.list);
        Button btnCancel = (Button) view.findViewById(R.id.cancel);
        textTitle.setText(title);
        if (cancel > 0) {
            btnCancel.setText(cancel);
        } else if (cancel < 0) {
            btnCancel.setVisibility(View.GONE);
        }
        btnCancel.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                dialog.dismiss();
            }
        });

        list.setAdapter(adapter);
        list.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView arg0, View arg1, int arg2, long arg3) {
                dialog.dismiss();
                listener.onItemClick(arg2);
            }
        });

        dialog.getWindow().setContentView(view);
    }

    public static void showEdit(final Context context, final String content,
            final OnEditDialogDoneListener listener) {
        final EditText edit = new EditText(context);
        if (!TextUtils.isEmpty(content)) {
            edit.setText(content);
        }
        new AlertDialog.Builder(context)
                .setTitle("input")
                .setView(edit)
                .setPositiveButton("done", new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        String number = edit.getText().toString();
                        if (!TextUtils.isEmpty(number)) {
                            listener.onDone(number);
                        } else {
                            showEdit(context, content, listener);
                            Toast.makeText(context, "content can't be empty", Toast.LENGTH_SHORT)
                                    .show();
                        }
                    }
                })
                .setNegativeButton("cancel", null)
                .show();
    }
}
// http请求对话框
	public void showHttpDialog(Context context, int titleId, String content,ProgressDialog mProgress) {
		// 初始化
		mProgress = null;
		mProgress = new ProgressDialog(context);
		mProgress.setProgressStyle(ProgressDialog.STYLE_SPINNER);// 设置风格为圆形进度条
		mProgress.setTitle(titleId);// 设置标题
		mProgress.setMessage(content);
		mProgress.setIndeterminate(false);// 设置进度条是否为不明确 false 就是不设置为不明确
		mProgress.setCancelable(true);// 用户按back键不能消失对话框
		mProgress.setCanceledOnTouchOutside(false); // 点击外面不能消失对话框
		mProgress.show();
	}


你可能感兴趣的:(android)