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