今天接了一个需求,要写一个下拉框供客户选择
但是默认是不选中的,还要有一个提示客户选择的内容
一开始觉得挺简单的,用一个spinner就搞定了,但是发现spinner是默认选中的,而且进入页面时候就调用了onItemSelected这个接口,并且不能修改默认显示的内容
上网查了一大堆资料,都没有一个完美的解决方案,都是说什么在监听事件里加一个boolean变量,如果点击就变成true,执行需要执行的代码
但是这个方法真的很挫!首先,你已经默认选择了点击第一项,只是你把内容改了,再点击第一项是不执行代码了,就说你一定要点第一项以外的Item,才能再去点击第一项
这点就是无法容忍的。
然后只能自己重写一个了。
思路是重写一个TextView,然后点击弹出一个PopupWindow。
首先让我们来看一下控件:
public class MySpinner extends TextView{
private Context mContext;
private ArrayAdapter adapter;
private ListView popContentView;
private OnItemClickListener onItemClickListener;
private PopupWindow mDropView;
public MySpinner(Context context, AttributeSet attrs) {
super(context, attrs);
mContext = context;
}
@Override
protected void onFinishInflate() {
supe