spinner的详情及扩展 https://www.cnblogs.com/plokmju/p/android_Spinner.html

1.Spinner的常用XML属性

  • android:spinnerMode:dialog和dropDown两种模式,默认为下拉列表。
  • android:entries:使用资源配置数据源。
  • android:prompt:设置标题,仅在dialog模式下有效。

2.Spinner的触发事件

它本身没有定义这些事件,均继承自间接父类AdapterView。

  • AdapterView.OnItemCLickListener:列表项被点击时触发。
  • AdapterView.OnItemLongClickListener:列表项被长按时触发。
  • AdapterView.OnItemSelectedListener:列表项被选择时触发。
AdapterView.OnItemSelectedListener有四个参数。

AdapterView<?> parent:适配器的一个指针,适配器中有多个item,parent表示当前选中的那个item。
View view:通过view获取item中的控件。
int position:在适配器中的位置。
long id :id和position的值通常是一样的。id=adapter.getItemId(position)

3.Spinner数据源的设置

  • 通过xml资源文件设置,缺点是设置的数据是固定的,不是动态的。

  • 使用Adapter接口设置,这是最常见的方式,动态、灵活,可以设定各种样式以及数据来源。

    xml资源文件设置

    新建资源文件:右击app/res/values-->new-->XML-->values XML file-->strings.xml
    操作 //string标签设置字符串,name是变量名,操作是变量的值
    //string-array标签设置数组,name是数组名,item是数组中的值        求和        总数        平均数 

    xml文件结构:

    • 在strings.xml中设置好数据后,spinner控件使用android:entries="@array/operate"获取数组的数据, android:prompt="@string/spinnerTitle"获取字符串的值

设置适配器Adapter

1.设置一个ArrayList存放显示的数据。
2.创建一个ArrayAdapter。
ArrayAdapter adapter = new ArrayAdapter(Context context, android.R.layout.simple_spinner_item,ArrayList datalist);
第一个参数:上下文环境,当前的activity。
第二个参数:这个是安卓内置的布局,它是一个textview,datalist的数据通过textview.setText()显示。也可以自己定义布局用来显示datalist的数据。
第三个参数:存放数据的集合。

spinner的原理就是,遍历datalist里面的每一条数据,读出一条,显示到第二个参数对应的布局中,就形成了spinner下拉出现多个数据

3.关联适配器和spinner控件。
获取spinner控件:spinnerDown = (Spinner) findViewById(R.id.spinnerDown);
spinnerDown.setAdapter(adapter);

4.效果图

下滑的spinner

弹出对话框的spinner

选择“平均数”这个选项会在下面的textview显示选择的内容

5.代码

MainActivity.java

   private Spinner spinnerDown,spinnerDialog;    private TextView textShow;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        spinnerDown = (Spinner) findViewById(R.id.spinnerDown);        spinnerDialog = (Spinner) findViewById(R.id.spinnerDialog);        textShow=(TextView)findViewById(R.id.textShow);        // 声明一个ArrayAdapter用于存放简单数据        ArrayAdapter adapter = new ArrayAdapter(                MainActivity.this, android.R.layout.simple_spinner_item,                getData());        // 把定义好的Adapter设定到spinner中        spinnerDown.setAdapter(adapter);        // 为第一个Spinner设定选中事件        spinnerDialog.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {            @Override            public void onItemSelected(AdapterView<?> parent, View view,                                       int position, long id) {                // 在选中之后触发                String opt=parent.getItemAtPosition(position).toString();                textShow.setText(opt);            }            @Override            public void onNothingSelected(AdapterView<?> parent) {                textShow.setText("");            }        });        spinnerDown.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {            @Override            public void onItemSelected(AdapterView<?> parent, View view,                                       int position, long id) {                // 在选中之后触发                textShow.setText(parent.getItemAtPosition(position).toString());            }            @Override            public void onNothingSelected(AdapterView<?> adapterView) {                textShow.setText("");            }        });    }     private List getData() {                 // 数据源                 List dataList = new ArrayList();                 dataList.add("北京");                 dataList.add("上海");                 dataList.add("南京");                 dataList.add("宜昌");                 return dataList;             }

activity_main.xml

                

strings.xml

    mySpinner    操作            求和        总数        平均数    

更多相关文章

  1. android EditText设置不可写
  2. Android学习-ProgressBar、SeekBar
  3. Android(安卓)写文件权限
  4. android noTouch 事件
  5. Android上传图片至服务器
  6. android配置文件详解
  7. Android(安卓)中播放内存中视频
  8. Android监听消息通知栏点击事件
  9. android的触摸屏事件

随机推荐

  1. android屏幕常亮
  2. android创建通知栏(java版)
  3. Android(安卓)NDK之发送短信
  4. Android(安卓)通过GPS进行定位
  5. 多线程例子 android camera capture
  6. Android(安卓)图片拖动 放大
  7. android Progressbar使用
  8. Android(安卓)调用联系人列表,选择联系人
  9. Android(安卓)官方架构组件之 Lifecycle
  10. Android(安卓)GPS获取当前位置信息