package com.qiwenge.android.ui.dialogs; import android.app.Activity; import android.app.Dialog; 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.ImageView; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.ProgressBar; import android.widget.TextView; import com.qiwenge.android.R; import com.qiwenge.android.listeners.OnPositiveClickListener; import java.util.ArrayList; import java.util.List; /** * FDialogUtils * <p/> * Created by Eric on 2014年9月25日 * * @since 2.0 */ public class MyDialog { private String mTitle; private Dialog mDialog; private Activity mContext; private LinearLayout layoutContainer; private LinearLayout layoutContent; private ProgressBar pbLoading; private TextView tvTitle; private TextView tvMsg; private ImageView ivDivider; @SuppressWarnings("unused") private MyDialog() { } public MyDialog(Activity act) { this.mContext = act; init(); } public MyDialog(Activity act, int resId) { this.mTitle = act.getString(resId); this.mContext = act; init(); } public MyDialog(Activity act, String title) { this.mTitle = title; this.mContext = act; init(); } private void init() { mDialog = new Dialog(mContext, R.style.Dialog_Fullscreen); mDialog.getWindow().setWindowAnimations(R.style.MyDialogStyle); View container = getContainerView(mContext); tvTitle = (TextView) container.findViewById(R.id.tv_dialog_title); tvMsg = (TextView) container.findViewById(R.id.tv_dialog_msg); tvMsg.setVisibility(View.GONE); ivDivider = (ImageView) container.findViewById(R.id.iv_divider); if (mTitle != null) { tvTitle.setVisibility(View.VISIBLE); tvTitle.setText(mTitle); } else { tvTitle.setVisibility(View.GONE); } layoutContent = (LinearLayout) container.findViewById(R.id.layout_content); pbLoading = (ProgressBar) container.findViewById(R.id.pb_loading); layoutContainer = (LinearLayout) container.findViewById(R.id.layout_dialog_content); container.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (cancelable) mDialog.dismiss(); } }); mDialog.setContentView(container); mDialog.setCancelable(true); } public void showLoading() { pbLoading.setVisibility(View.VISIBLE); layoutContent.setVisibility(View.GONE); } public void showContent() { pbLoading.setVisibility(View.GONE); layoutContent.setVisibility(View.VISIBLE); } public void setMessage(int resId) { setMessage(mContext.getString(resId)); } public void setMessage(String message) { tvMsg.setVisibility(View.VISIBLE); tvMsg.setText(message); ivDivider.setVisibility(View.GONE); } public void setItems(String[] items, OnItemClickListener listener) { setItems(items, listener, true); } public void setItems(String[] items, OnItemClickListener listener, boolean autoDismiss) { List<String> data = new ArrayList<String>(); for (int i = 0; i < items.length; i++) { data.add(items[i]); } DialogSimpleAdapter adpater = new DialogSimpleAdapter(mContext, data); setItems(adpater, listener, autoDismiss); } public void setItems(BaseAdapter adapter, final OnItemClickListener listener) { setItems(adapter, listener, true); } public void setItems(BaseAdapter adapter, final OnItemClickListener listener, final boolean autoDismiss) { View view = getView(mContext, R.layout.dialog_l_list); ListView listView = (ListView) view.findViewById(R.id.listview_dialog); listView.setAdapter(adapter); listView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { if (listener != null) listener.onItemClick(parent, view, position, id); if (autoDismiss) dismiss(); } }); addView(view); } public void setPositiveButton(int sureTextResId, OnPositiveClickListener listener) { setPositiveButton(mContext.getString(sureTextResId), listener); } public void setPositiveButton(String btnSureText, String btnCancelText, final OnPositiveClickListener listener) { View view = getView(mContext, R.layout.dialog_l_simple); TextView btnCancel = (TextView) view.findViewById(R.id.tv_btn_cancel); TextView btnSure = (TextView) view.findViewById(R.id.tv_btn_sure); if (btnSureText != null) btnSure.setText(btnSureText); if (btnCancelText != null) btnCancel.setText(btnCancelText); btnCancel.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { dismiss(); } }); btnSure.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { dismiss(); if (listener != null) listener.onClick(); } }); addView(view); } public void setPositiveButton(String btnSureText, final OnPositiveClickListener listener) { setPositiveButton(btnSureText, null, listener); } public void addView(View view) { layoutContainer.addView(view); } public void removeAllViews() { layoutContainer.removeAllViews(); } public void show() { if (mDialog != null) { mDialog.show(); showContent(); } } public void dismiss() { if (mDialog != null) mDialog.dismiss(); } private boolean cancelable = true; public void setCancelable(boolean b) { mDialog.setCancelable(b); cancelable = b; } private View getContainerView(Activity context) { return LayoutInflater.from(context).inflate(R.layout.dialog_l_container, null); } public View getView(Activity context, int layoutResId) { return LayoutInflater.from(context).inflate(layoutResId, null); } }