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

原文地址:https://www.cnblogs.com/xiaobijia/p/5329935.html