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文件结构:
    安卓的下拉控件Spinner_第1张图片

    • 在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_第2张图片
弹出对话框的spinner
安卓的下拉控件Spinner_第3张图片
选择“平均数”这个选项会在下面的textview显示选择的内容
安卓的下拉控件Spinner_第4张图片

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 适配器Adpter的使用总结 之 CursorAdpter
  2. Android数据的四种存储方式
  3. Android旋转屏幕不销毁数据的方法
  4. 上接系出名门Android(8) - 控件(View)之TextSwitcher, Gallery,
  5. Android使用SQLiteDatabase直接存取数据与图像
  6. android 数据库操作 GreenDAO 第三方开源项目
  7. android 使用Okhttp封装上传JSON格式数据的工具类
  8. android —— 自定义控件 竖向的ViewPager,上下滑动的组件,android
  9. 【特效】【自定义控件】关键字飘飞效果

随机推荐

  1. [置顶] Android中实现短信验证功能
  2. Android Studio最终篇 - 架构
  3. Android 开发调试工具的使用总结
  4. 关于android中几个Info系列类的总结
  5. Android Binder机制分析
  6. Android---App Inventor环境搭建
  7. Android 核心分析 之五基本空间划分
  8. android触屏事件处理onInterceptTouchEve
  9. Android的四大组件之三--Activity(4)----->
  10. Android培训班(46)