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();
}