widget(4、spinner)
16lz
2021-01-23
Spinner 是android下的一个下拉框控件,可以支持多级,通常定义如下:
<Spinner android:id="@+id/spinner1" android:layout_width="match_parent" android:layout_height="wrap_content" />
Spinner与ListView类似,都是采用适配器的方法关联数据,例如:
//定义一个数据buffer = new ArrayList<String>();buffer.add("条目1");buffer.add("条目2");buffer.add("条目3");
定义一个适配器,这里采用基本适配器,默认实现四个方法,如下:
private BaseAdapter adapter = new BaseAdapter(){ @Override public int getCount() { return buffer.size();//数据大小 } @Override public Object getItem(int arg0) { return buffer.get(arg0);//某一个位置的数据,对应一个item } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { //绘制展示部分 LinearLayout ll = new LinearLayout(MainActivity.this); ll.setOrientation(LinearLayout.HORIZONTAL); TextView tv = new TextView(MainActivity.this); tv.setText(buffer.get(position)); ll.addView(tv); return ll; } };
之后配置适配器:
spinner.setAdapter(adapter);
在Spinner中有两个常用API:
- 一个是某一个Item 被选中的事件
@Overridepublic void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,long arg3) { LinearLayout ll = (LinearLayout) arg1; TextView tv = (TextView) ll.getChildAt(0); Toast toast = new Toast(MainActivity.this); toast = Toast.makeText(getApplicationContext(), tv.getText(), Toast.LENGTH_SHORT); toast.show();}
此处:arg0对应position,arg3对应id(即adapter里getItemId的值,而非视图ID)
- 数据刷新时更新视图
buffer.add("条目4");buffer.add("条目5");adapter.notifyDataSetChanged();//触发更新视图控件
更多相关文章
- Android 数据库Sqlite的使用(1)
- android Service之四:传递复杂数据类型的远程服务
- 传智播客—Android(二)数据存储和访问 之文件
- Android保存数据几种常用方法解析
- Android数据储存
- 王家林的81门一站式云计算分布式大数据&移动互联网解决方案课程
- Android 封装的数据库管理操作类
- Android Sqlite轻量级数据库框架