2.4.10 Spinner(列表选项框)的基本使用

Android基础入门教程——2.4.10 Spinner(列表选项框)的基本使用

标签(空格分隔): Android基础入门教程

本节引言:

本来本节是想给大家介绍一个Gallery(画廊)的一个控件的,后来想想还是算了,因为 在Android 4.1后就已经被弃用了,尽管我们可以通过兼容不来使用Gallery,不过想想 还是算了,因为Gallery在每次切换图片的时候,都需要重新创建视图,这样无疑会造成 很大资源浪费!我们可以通过其他方法来实现Gallery效果,比如通过HorizontalScrollView 来实现水平滚动效果,或者编写一个水平方向的ListView~有兴趣自己谷歌! 本节学习的是一个叫做Spinner的Adapter控件! 应用场景:当我们的app需要用户输入数据时,除了让用户自己打字以外,还有一种比较贴心的设计: 列出一组选项让用户从中挑选,从而方便了我们的用户! 话不多说,开始学习Spinner的基本用法~

1.相关属性 android:prompt:设置对话框模式的列表框的提示信息(标题),只能够引用string.xml 中的资源id,而不能直接写字符串 android:spinnerMode:列表框的模式,,有两个可选值: dialog:对话框风格的窗口dropdown:下拉菜单风格的窗口(默认) 可选属性:android:entries:使用数组资源设置下拉列表框的列表项目 2.使用示例:

对了,Spinner会默认选中第一个值,就是默认调用spinner.setSection(0), 你可以通过这个设置默认的选中值,另外,会触发一次OnItemSelectedListener 事件,暂时没找到解决方法,下面折衷的处理是:添加一个boolean值,然后设置 为false,在onItemSelected时进行判断,false说明是默认触发的,不做任何操作 将boolean值设置为true;true的话则正常触发事件! 示例中写了两个不同的Spinner,从数据源,列表框风格等进行对比~ 接下来我们来看下

效果图:

代码实现:

这里依然使用的我们前面的可复用BaseAdapter:

第一个Spinner的数据源编写:

在res/values下编写一个:myarrays.xml的文件,内容如下:

=>不屈白银>华贵铂金>超凡大师></resources>

接着是第二个Spinner的布局:item_spin_hero.xml:

===”5dp”><ImageView=”48dp”android:src=”@mipmap/iv_lol_icon1″ /><TextView===”16sp” /></LinearLayout>

再接着编写一个Entitiy实体类:Hero.java:

/** * Created by Jay on 2015/9/24 0024. */{private int hIcon;private String hName;public Hero() {}public Hero(int hIcon, String hName) {this.hIcon = hIcon;this.hName = hName;}() {return hIcon;}public String gethName() {return hName;}(int hIcon) {this.hIcon = hIcon;}(String hName) {this.hName = hName;}}

最后是MainActivity的布局与Java代码部分:

布局文件:activity_main.xml:

===”5dp”tools:context=”.MainActivity”><TextView==”18sp” /><Spinner==”@string/spin_title”android:spinnerMode=”dialog” /><TextView==”#F5684A”android:textSize=”18sp” /><Spinner=”64dp” /></LinearLayout>

MainActivity.java:

.OnItemSelectedListener {private Spinner spin_one;private Spinner spin_two;private Context mContext;one_selected = false;private boolean two_selected = false;private ArrayList<Hero> mData = null;private BaseAdapter myAdadpter = null;(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mContext = MainActivity.this;mData = new ArrayList<Hero>();bindViews();}() {spin_one = (Spinner) findViewById(R.id.spin_one);spin_two = (Spinner) findViewById(R.id.spin_two);mData.add(new Hero(R.mipmap.iv_lol_icon1,”迅捷斥候:提莫(Teemo)”));mData.add(new Hero(R.mipmap.iv_lol_icon2,”诺克萨斯之手:德莱厄斯(Darius)”));mData.add(new Hero(R.mipmap.iv_lol_icon3,”无极剑圣:易(Yi)”));mData.add(new Hero(R.mipmap.iv_lol_icon4,”德莱厄斯:德莱文(Draven)”));mData.add(new Hero(R.mipmap.iv_lol_icon5,”德邦总管:赵信(XinZhao)”));mData.add(new Hero(R.mipmap.iv_lol_icon6,”狂战士:奥拉夫(Olaf)”));myAdadpter = new MyAdapter<Hero>(mData,R.layout.item_spin_hero) {(ViewHolder holder, Hero obj) {holder.setImageResource(R.id.img_icon,obj.gethIcon());holder.setText(R.id.txt_name, obj.gethName());}};spin_two.setAdapter(myAdadpter);spin_one.setOnItemSelectedListener(this);spin_two.setOnItemSelectedListener(this);}(AdapterView<?> parent, View view, int position, long id) {switch (parent.getId()){case R.id.spin_one:if(one_selected){Toast.makeText(mContext,”您的分段是~:” + parent.getItemAtPosition(position).toString(),Toast.LENGTH_SHORT).show();}else one_selected = true;break;case R.id.spin_two:if(two_selected){TextView txt_name = (TextView) view.findViewById(R.id.txt_name);Toast.makeText(mContext,”您选择的英雄是~:” + txt_name.getText().toString(),Toast.LENGTH_SHORT).show();}else two_selected = true;break;}}(AdapterView<?> parent) {}}

另外关于Spinner的OnItemSelectedListener,以及如何获得选中项的值,就自己看上面的 代码啦~

3.代码示例下载:

SpinnerDemo.zip

本节小结 看自家总在期待,不知将来好歹,新乐吧总在不断等待,

2.4.10 Spinner(列表选项框)的基本使用

相关文章:

你感兴趣的文章:

标签云: