package com.withiter.quhao.view; import android.app.Activity; import android.content.Context; import android.graphics.Typeface; import android.graphics.drawable.ColorDrawable; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup.LayoutParams; import android.widget.Button; import android.widget.PopupWindow; import android.widget.TextView; import android.widget.ViewFlipper; import com.withiter.quhao.R; import com.withiter.quhao.view.adapter.ArrayWheelAdapter; import com.withiter.quhao.view.adapter.OnWheelChangedListener; import com.withiter.quhao.view.adapter.WheelView; public class SelectSeatNo extends PopupWindow implements OnClickListener { /** * 主activity */ private Activity mContext; /** * 选择的view */ private View selectView; private ViewFlipper viewfipper; private Button submitBtn; private Button cancelBtn; private String seatNo; private SeatNumericAdapter seatNoAdapter; private WheelView seatView; private int mCurSeatNo = 0; private String[] seats; private String[] seatType; public SelectSeatNo(Activity context, String[] seatNos,int mCurSeatNo) { super(context); this.mContext = context; this.seats = seatNos; this.mCurSeatNo = mCurSeatNo; LayoutInflater inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); selectView = inflater.inflate(R.layout.seat_select, null); viewfipper = new ViewFlipper(context); viewfipper.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); seatView = (WheelView) selectView.findViewById(R.id.seat); submitBtn = (Button) selectView.findViewById(R.id.submit); cancelBtn = (Button) selectView.findViewById(R.id.cancel); submitBtn.setOnClickListener(this); cancelBtn.setOnClickListener(this); OnWheelChangedListener listener = new OnWheelChangedListener() { @Override public void onChanged(WheelView wheel, int oldValue, int newValue) { Log.d("", "oldValue : " + oldValue + " , newValue : " + newValue); updateSeatNo(seatView,newValue); } }; seatType = mContext.getResources().getStringArray(R.array.seat); seatNoAdapter = new SeatNumericAdapter(mContext, seats, 0); seatNoAdapter.setTextType(seatType[0]); seatView.setViewAdapter(seatNoAdapter); seatView.setCurrentItem(mCurSeatNo); seatView.addChangingListener(listener); updateSeatNo(seatView,this.mCurSeatNo); viewfipper.addView(selectView); viewfipper.setFlipInterval(6000000); this.setContentView(viewfipper); this.setWidth(LayoutParams.MATCH_PARENT); this.setHeight(LayoutParams.WRAP_CONTENT); this.setFocusable(true); ColorDrawable dw = new ColorDrawable(0x00000000); this.setBackgroundDrawable(dw); this.update(); } @Override public void showAtLocation(View parent, int gravity, int x, int y) { super.showAtLocation(parent, gravity, x, y); viewfipper.startFlipping(); } private void updateSeatNo(WheelView seatView, int mCurSeatNo) { seatView.setCurrentItem(mCurSeatNo); seatNo = seats[seatView.getCurrentItem()]; } private class SeatNumericAdapter extends ArrayWheelAdapter<String> { // Index of current item int currentItem; // Index of item to be highlighted int currentValue; /** * Constructor */ public SeatNumericAdapter(Context context, String[] items, int current) { super(context, items); this.currentItem = current; setTextSize(24); } protected void configureTextView(TextView view) { super.configureTextView(view); view.setTypeface(Typeface.SANS_SERIF); } public CharSequence getItemText(int index) { currentItem = index; return super.getItemText(index); } } @Override public void onClick(View v) { switch(v.getId()) { case R.id.cancel: break; case R.id.submit: TextView text = (TextView) mContext.findViewById(R.id.seatNo); text.setText(seatNo); break; } this.dismiss(); } }