码迷,mamicode.com
首页 > 其他好文 > 详细

组件的使用(一)Spinner的使用

时间:2015-07-28 00:53:53      阅读:110      评论:0      收藏:0      [点我收藏+]

标签:spinner

Spinner即下拉菜单。

在android中实现Spinner组件需要以下三个步骤:

1.在XML文件中定义标签Spinner

<Spinner
  android:id="@+id/spinner"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  <!--其它属性略-->
  />

2.在Strings.xml文件中声明items

<resources>
  <string name="item1">Item1</string>
  <string name="item2">Item2</string>
  <string name="item3">Item3</string>
  <!--其它item省略-->
</rresources>

3.Java代码实现Controller
我们需要BaseAdapter将字符串数据传给Spinner UI组件,而实现BaseAdapter必须覆盖一些方法。
代码片示例:

//数据域
Spinner spinner;
int[] messageIds={R.string.item1,R.string.item2,R.string.item3};//下拉菜单spinner的items资源
        //覆盖onCreate()方法
        @Override
        public void onCreate(Bundle savedInstanceState) {

            this.requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉标题栏
            super.onCreate(savedInstanceState);
            setContentView(R.layout.register);
            processSpinner();//处理下拉菜单spinner
        }
        //此方法用于处理下拉列表spinner
        private void processSpinner(){
            spinner=(Spinner)findViewById(R.id.spinner);
            //adapter 作为spinner的适配器
            BaseAdapter baseAdapter=new BaseAdapter() {

                @Override
                public View getView(int position, View convertView, ViewGroup parent) {
                    TextView spinnerItemTextView=new TextView(Register.this);
                    spinnerItemTextView.setText("    "+getResources().getText(messageIds[position]));
                    spinnerItemTextView.setTextColor(Color.BLACK);
                    spinnerItemTextView.setTextSize(16);

                    return spinnerItemTextView;
                }

                @Override
                public long getItemId(int arg0) {
                    // TODO Auto-generated method stub
                    return 0;
                }

                @Override
                public Object getItem(int arg0) {
                    // TODO Auto-generated method stub
                    return null;
                }

                @Override
                public int getCount() {
                    // TODO Auto-generated method stub
                    return 3;
                }
            };
            spinner.setAdapter(baseAdapter);//为spinner设置adapter
        }

如果要为Spinner Items设置点击事件的话,可以这么做:

spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> parent, View view,
            int position, long id) {
        String str=parent.getItemAtPosition(position).toString();
        Toast.makeText(SpinnerActivity.this, "你点击的是:"+str, 2000).show();
    }
    @Override
    public void onNothingSelected(AdapterView<?> parent) {
        // TODO Auto-generated method stub
    }
});

注意:
其实,String资源也可以写成另一种形式:

<string-array name="spinnername">
        <item>北京</item>
        <item>上海 </item>
        <item>广州</item>
        <item>深圳</item>
    </string-array>

对应的java代码中是建立String数组而不是String ID数组。

// 建立String数组存储Spinner数据
String[] mItems = getResources().getStringArray(R.array.spinnername);

版权声明:本文为博主原创文章,未经博主允许不得转载。

组件的使用(一)Spinner的使用

标签:spinner

原文地址:http://blog.csdn.net/qq_16912257/article/details/47094125

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!