spinner 其实就是一个列表选择框,不过android的列表选择框并不是需要显示下拉列表的,
相当于弹出一个菜单供用户选择。

spinner 是ViewGrop的一个间接子类,因此他可以充当容器。

先介绍一下apinner 的两个常用属性.

android:prompt 设置该列表选择框的提示信息

android:entries 使用数组资源设置该下拉列表框的列表项目。

第一步,定义需要显示的数据。

<?xml version="1.0" encoding="utf-8"?><resources>    <string name="app_name">spanner</string>            <string name="book">选择书籍</string> <string-array name="books"> <item >java 学习笔记</item> <item >J2EE 学习笔记</item> <item >android 学习笔记</item> </string-array></resources>

第二步.定义一个Spinner 把数据展示出来。

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    > <Spinner         android:layout_width="fill_parent" android:layout_height="wrap_content"android:entries="@array/books"android:prompt="@string/book"/></LinearLayout>

效果图:



以上的效果,没有写任何代码,但通常做开发中并不是这么做的。而是用代码来实现的效果。

package android.basic.lesson10;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.widget.AdapterView;import android.widget.AdapterView.OnItemSelectedListener;import android.widget.ArrayAdapter;import android.widget.Spinner;import android.widget.Toast;public class MainHelloSpinner extends Activity {    /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);                //找到Xml中定义的下拉列表        Spinner spinner = (Spinner)findViewById(R.id.spinner);        //准备一个数组适配器        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(                this, R.array.colors, android.R.layout.simple_spinner_item);        //设置下拉样式        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);        //为下拉列表设置适配器        spinner.setAdapter(adapter);        //定义子元素选择监听器        OnItemSelectedListener oisl=  new OnItemSelectedListener() {@Overridepublic void onItemSelected(AdapterView<?> parent, View view,int position, long id) {              Toast.makeText(MainHelloSpinner.this,"选择的色彩: " +                  parent.getItemAtPosition(position).toString(), Toast.LENGTH_LONG).show();}@Overridepublic void onNothingSelected(AdapterView<?> parent) {}        };        //为下拉列表绑定事件监听器        spinner.setOnItemSelectedListener(oisl);    }}

效果图:

Spinner在项目中的应用。场景,spinner中的数据是从数据库中提取出来的,也就是一个list。这个时候我们就需要重写BaseAdapter了。代码如下:

 //下拉表监听方法    public void SpinnerListener(final List<String> list)     {    Spinner setspinner=(Spinner)this.findViewById(R.id.mySpinner);    BaseAdapter ba=new BaseAdapter()        {    List<String> result=list;@Overridepublic int getCount() {return result.size();}@Overridepublic Object getItem(int arg0) { return null;}@Overridepublic long getItemId(int arg0) { return 0; }@Overridepublic View getView(int arg0, View arg1, ViewGroup arg2) {LinearLayout ll=new LinearLayout(MainActivity.this);ll.setOrientation(LinearLayout.VERTICAL);//设置朝向TextView tv=new TextView(MainActivity.this);tv.setText(result.get(arg0));tv.setTextSize(18);//设置字体大小tv.setTextColor(R.color.black);//设置字体颜色ll.addView(tv);//添加到LinearLayout中 return ll;}                };                setspinner.setAdapter(ba);//为Spinner设置内容适配器                setspinner.setOnItemSelectedListener   //设置选项选中的监听器        (           new OnItemSelectedListener()           {            @Override   public void onItemSelected(AdapterView<?> arg0, View arg1,int arg2, long arg3)             {   LinearLayout ll=(LinearLayout)arg1;//获取当前选中选项对应的LinearLayout   TextView tvn=(TextView)ll.getChildAt(0);//获取其中的TextView    String Isource=(String) tvn.getText();   System.out.println("Isource:"+Isource);            }                        @Override            public void onNothingSelected(AdapterView<?> arg0) { }                      }        );    }



使用的时候:

 List<String> rolors = new ArrayList<String>();        rolors.add("红色");        rolors.add("白色");        SpinnerListener(rolors);

效果图:





更多相关文章

  1. Python list sort方法的具体使用
  2. android window类的解释及软输入法模式选项:
  3. Android属性设置android:noHistory="true",打开下一个Activity关
  4. Android(安卓)Map开发基础知识学习笔记
  5. android checkbox多选框实现
  6. android:View的setTag和getTag使用
  7. react-native 启动页(react-native link react-native-splash-scr
  8. Android-设置手机桌面
  9. Android之音频录音

随机推荐

  1. Android搭建opencv环境(超详细)
  2. 解决eclipse中执行程序提示“Your projec
  3. Android(安卓)Studio中Gradle的Daemon
  4. Android界面显示_视图Choreographer控制
  5. android设备与蓝牙模块之间交互(蓝牙命令,
  6. Android快捷便利但不常被使用的原生工具
  7. Android(安卓)2D游戏引擎1
  8. Android魔法(第三弹)—— 一步步实现对折页
  9. 【Android系统源码修改】如何用Android(
  10. Android(安卓)控件之Spinner