package com.letv.watchball.view; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.util.AttributeSet; import android.view.View; import android.view.View.OnClickListener; import android.widget.LinearLayout; import android.widget.TextView; import com.letv.watchball.R; public class LetvSpinner extends LinearLayout implements OnClickListener, DialogInterface.OnClickListener { public interface OnLetvSpinnerSelectedListener { public void onSelected(int pos); } private TextView spinner_name;// 用于显示所选文字 private LinearLayout spinner_selecter; private String selectedValue; private String itemValues[]; private AlertDialog dialog; private OnLetvSpinnerSelectedListener mListener; private Context context ; private int whichSelect = 0; public LetvSpinner(Context context, AttributeSet set) { super(context, set); this.context = context; initView(); } private void initView() { inflate(context, R.layout.letv_spinner_view, this); findView(); } private void findView() { spinner_selecter = (LinearLayout) findViewById(R.id.spinner_selecter); spinner_name = (TextView) findViewById(R.id.spinner_name); } /** * 使用此控件前,必须先调用此方法进行初始化 */ public void init(String[] itemValues, String defaultItem) { this.itemValues = itemValues; spinner_selecter.setOnClickListener(this); dialog = new AlertDialog.Builder(getContext()).setSingleChoiceItems(this.itemValues, 0, this).create(); selectedValue = itemValues[0]; spinner_name.setText(defaultItem); } /** * 添加一个 "返回" 或者 "取消" */ public void setButton(String button) { dialog.setButton(button, this); } /** * 添加一个 按钮 */ public void SetButton(String button, DialogInterface.OnClickListener listener) { dialog.setButton(button, listener); } /** * 取消显示alertDialog */ public void dismiss() { dialog.dismiss(); } /** * 设置选中的项,从0开始 */ @Deprecated public void setSelection(int position) { if (position >= 0 && position < itemValues.length) { whichSelect = position; selectedValue = itemValues[position]; spinner_name.setText(selectedValue); dialog.getListView().setSelection(position);// 此行不生效 } } @Override public void onClick(DialogInterface dialog, int which) { if (which >= 0 && which < itemValues.length) { whichSelect = which; selectedValue = itemValues[which]; spinner_name.setText(selectedValue); if (mListener != null) { mListener.onSelected(which); } } dialog.dismiss(); } @Override public void onClick(View v) { dialog.show(); spinner_name.setText(selectedValue); mListener.onSelected(whichSelect); } /** * 获取所选择的值 */ public String getSelectedValue() { return selectedValue; } public void setListener(OnLetvSpinnerSelectedListener listener) { mListener = listener; } }