android spinner的一些用法
参考:
Android:控件Spinner实现下拉列表 - tinyphp - 博客园
http://www.cnblogs.com/tinyphp/p/3858920.html
Spinner在初始化时会自动调用一次OnItemSelectedListener事件
原因:有人说是Bug,其实这与C#的事件机制类似,这个我也不懂。
提供的解决办法:在事件注册之前调用
spinner.setSelection(0, true);
- 方法一:动态展示,java代码实现,用适配器给Spinner添加数据
/** * 分类查找方法 */ private void sortMehtod() { //数据 ArrayList<String> data_list = new ArrayList<String>(); data_list.add("全部分类"); data_list.add("原创协议"); data_list.add("我的关注"); data_list.add("我的发布"); data_list.add("伙伴协议"); data_list.add("客户协议"); //适配器 ArrayAdapter<String> arr_adapter= new ArrayAdapter<String>(context, android.R.layout.simple_spinner_item, data_list); //设置样式 arr_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); //加载适配器 spinner.setAdapter(arr_adapter); //一定要用这个函数,不然会自动调用OnItemListener这个函数 spinner.setSelection(0,true); spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { sortId=position; ToastUtils.show(context, "哈啊哈"+position); // onRefresh(); } @Override public void onNothingSelected(AdapterView<?> parent) { // TODO Auto-generated method stub } }); }
控件布局
<Spinner android:id="@+id/payment_spinner" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/icon_spinner_bkg" />
- 方法二:静态展示,xml布局实现,用资源文件给Spinner添加数据:android:entries="@array/sort_array" 指定数据源。
在布局中指定数据:
<Spinner android:id="@+id/sort_trade_spinner" android:layout_width="0dp" android:layout_height="32dp" android:layout_weight="1.0" android:background="@drawable/icon_spinner_bkg" android:entries="@array/sort_array" android:padding="5dip" />
数据文件:sort_array数据:
<string-array name="sort_array"> <item>全部分类</item> <item>原创协议</item> <item>我的关注</item> <item>我的发布</item> <item>伙伴协议</item> <item>客户协议</item> </string-array>
Spinner选择监听,java代码:
private Spinner tradeSpinner; tradeSpinner = getView(R.id.sort_trade_spinner); tradeSpinner.setSelection(0, true); tradeSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { sortId = position; } @Override public void onNothingSelected(AdapterView<?> parent) { // TODO Auto-generated method stub } }); }
取得选择位置:从0开始
int position = typeSpinner.getSelectedItemPosition();
效果图:
- 方法三 自定义
自定义Spinner - 皮皮鲁西西 - 博客园
http://www.cnblogs.com/xiaobijia/p/5377818.html