package cn.com.basic.face.dialog; import android.content.Context; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; import android.support.v7.widget.AppCompatTextView; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; import android.widget.PopupWindow; import android.widget.RelativeLayout; import android.widget.TextView; import com.bsk.zhangbo.demoforbsk.R; import cn.com.basic.face.adapter.MyWheelAdapter; import cn.com.basic.face.util.OkButtonClickedListener; import com.lidroid.xutils.ViewUtils; import com.lidroid.xutils.view.annotation.ViewInject; import com.lidroid.xutils.view.annotation.event.OnItemSelected; import com.wx.wheelview.widget.WheelView; import java.util.ArrayList; import java.util.HashMap; import java.util.List; public class CountrySelectionDialog extends PopupWindow implements View.OnClickListener, WheelView.OnWheelItemSelectedListener { @ViewInject(R.id.dialog_country_ok) private TextView dialog_country_ok; @ViewInject(R.id.dialog_country_cancel) private TextView dialog_country_cancel; @ViewInject(R.id.dialog_country_name_first_letter) private WheelView dialog_country_name_first_letter; @ViewInject(R.id.dialog_country_name) private WheelView dialog_country_name; private Context mContext; private View view; private HashMap> countryData; private List countryWordList; private List countryList; @OnItemSelected(R.id.dialog_country_name) public void dialog_country_name_click(View view) { System.out.println(""); } public CountrySelectionDialog(Context context, String[] countryWordData, List countryWordList, HashMap> countryData) { this.mContext = context; view = LayoutInflater.from(context).inflate(R.layout.dialog_country, null); ViewUtils.inject(this, view); dialog_country_cancel = (TextView) view.findViewById(R.id.dialog_country_cancel); dialog_country_ok = (TextView) view.findViewById(R.id.dialog_country_ok); dialog_country_cancel.setOnClickListener(this); dialog_country_ok.setOnClickListener(this); this.countryWordList = countryWordList; this.countryData = countryData; countryList = countryData.get(countryWordList.get(dialog_country_name_first_letter.getSelection())); dialog_country_name_first_letter.setWheelAdapter(new MyWheelAdapter(context)); dialog_country_name_first_letter.setSkin(WheelView.Skin.Holo); dialog_country_name_first_letter.setWheelSize(5); dialog_country_name_first_letter.setBackgroundResource(R.color.colorBackground); dialog_country_name.setWheelAdapter(new MyWheelAdapter(context)); dialog_country_name.setSkin(WheelView.Skin.Holo); dialog_country_name.setWheelSize(5); dialog_country_name.setBackgroundResource(R.color.colorBackground); WheelView.WheelViewStyle style = new WheelView.WheelViewStyle(); style.selectedTextColor = Color.parseColor("#11c3e3"); style.textColor = Color.parseColor("#bcc6cf"); style.selectedTextSize = 22; style.textSize = 16; style.holoBorderColor = Color.parseColor("#11c3e3"); dialog_country_name_first_letter.setStyle(style); dialog_country_name.setStyle(style); initData(); setOutsideTouchable(true); view.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent motionEvent) { View popLayout = view.findViewById(R.id.dialog_country_linear_layout); int top = popLayout.getTop(); int bottom = popLayout.getBottom(); int left = popLayout.getLeft(); int right = popLayout.getRight(); int y = (int) motionEvent.getY(); int x = (int) motionEvent.getX(); if (motionEvent.getAction() == MotionEvent.ACTION_UP) { if (y < top || y > bottom) { dismiss(); } if (x < left || x > right) { dismiss(); } } return true; } }); this.setContentView(this.view); this.setHeight(RelativeLayout.LayoutParams.MATCH_PARENT); this.setWidth(RelativeLayout.LayoutParams.MATCH_PARENT); this.setFocusable(true); ColorDrawable colorDrawable = new ColorDrawable(0x7f000000); this.setBackgroundDrawable(colorDrawable); this.setAnimationStyle(R.style.PopupAnimation); } @Override public void onClick(View view) { if (view instanceof AppCompatTextView) { if (((AppCompatTextView) view).getText().equals("确认")) { for (OkButtonClickedListener okButtonClickedListener : okButtonClickedListeners) { if (dialog_country_name_first_letter.getCurrentPosition() >= 0) { countryList = countryData.get(countryWordList.get(dialog_country_name_first_letter.getCurrentPosition())); okButtonClickedListener.onItemSelected(0, null, countryList.get(dialog_country_name.getCurrentPosition())); } } dismiss(); } if (((AppCompatTextView) view).getText().equals("取消")) { dismiss(); } } } @Override public void onItemSelected(int position, Object o) { countryList = countryData.get(countryWordList.get(dialog_country_name_first_letter.getCurrentPosition())); } private void initData() { dialog_country_name_first_letter.setWheelData(countryWordList); dialog_country_name_first_letter.join(dialog_country_name); dialog_country_name_first_letter.joinDatas(countryData); dialog_country_name.setWheelData(countryList); } private List okButtonClickedListeners = new ArrayList(); public void addOkButtonClickedListener(OkButtonClickedListener okButtonClickedListener) { this.okButtonClickedListeners.add(okButtonClickedListener); } }