參考:
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