本节引言:

本来本节是想给大家介绍一个Gallery(画廊)的一个控件的,后来想想还是算了,因为

在Android 4.1后就已经被弃用了,尽管我们可以通过兼容不来使用Gallery,不过想想

还是算了,因为Gallery在每次切换图片的时候,都需要重新创建视图,这样无疑会造成

很大资源浪费!我们可以通过其他方法来实现Gallery效果,比如通过HorizontalScrollView

来实现水平滚动效果,或者编写一个水平方向的ListView~有兴趣自己谷歌!

本节学习的是一个叫做Spinner的Adapter控件!

应用场景:当我们的app需要用户输入数据时,除了让用户自己打字以外,还有一种比较贴心的设计:

列出一组选项让用户从中挑选,从而方便了我们的用户!

话不多说,开始学习Spinner的基本用法~

1.相关属性

android:dropDownHorizontalOffset:设置列表框的水平偏移距离

android:dropDownVerticalOffset:设置列表框的水平竖直距离

android:dropDownSelector:列表框被选中时的背景

android:dropDownWidth:设置下拉列表框的宽度

android:gravity:设置里面组件的对其方式

android:popupBackground:设置列表框的背景

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的文件,内容如下:

英勇青铜

不屈白银

荣耀黄金

华贵铂金

璀璨钻石

超凡大师

最强王者

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

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="horizontal"

android:padding="5dp">

android:id="@+id/img_icon"

android:layout_width="48dp"

android:layout_height="48dp"

android:src="@mipmap/iv_lol_icon1" />

android:id="@+id/txt_name"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_marginLeft="10dp"

android:layout_marginTop="15dp"

android:text="德玛西亚"

android:textSize="16sp" />

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

/**

* Created by Jay on 2015/9/24 0024.

*/

public class Hero {

private int hIcon;

private String hName;

public Hero() {

}

public Hero(int hIcon, String hName) {

this.hIcon = hIcon;

this.hName = hName;

}

public int gethIcon() {

return hIcon;

}

public String gethName() {

return hName;

}

public void sethIcon(int hIcon) {

this.hIcon = hIcon;

}

public void sethName(String hName) {

this.hName = hName;

}

}

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

布局文件:activity_main.xml:

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical"

android:padding="5dp"

tools:context=".MainActivity">

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="选择您的排位分段"

android:textColor="#44BDED"

android:textSize="18sp" />

android:id="@+id/spin_one"

android:layout_width="100dp"

android:layout_height="64dp"

android:entries="@array/data"

android:prompt="@string/spin_title"

android:spinnerMode="dialog" />

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_marginTop="10dp"

android:text="选择你的拿手英雄~"

android:textColor="#F5684A"

android:textSize="18sp" />

android:id="@+id/spin_two"

android:layout_width="wrap_content"

android:layout_height="64dp" />

MainActivity.java:

public class MainActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener {

private Spinner spin_one;

private Spinner spin_two;

private Context mContext;

//判断是否为刚进去时触发onItemSelected的标志

private boolean one_selected = false;

private boolean two_selected = false;

private ArrayList mData = null;

private BaseAdapter myAdadpter = null;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

mContext = MainActivity.this;

mData = new ArrayList();

bindViews();

}

private void 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(mData,R.layout.item_spin_hero) {

@Override

public void bindView(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);

}

@Override

public void onItemSelected(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;

}

}

@Override

public void onNothingSelected(AdapterView> parent) {

}

}

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

代码啦~

3.代码示例下载:

本节小结

好的,本节给大家介绍了Spinner(下拉选项框)的使用,例子还是蛮有趣的,哈哈~!

别问我哪个区什么段位,我可是人机小王子,可惜一直在青铜分段苦苦挣扎~

你知道为什么的

,好吧,本节就到这里~

java spinner默认选项_2.5.3 Spinner(列表选项框)的基本使用相关推荐

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

    Android基础入门教程--2.4.10 Spinner(列表选项框)的基本使用 标签(空格分隔): Android基础入门教程 本节引言: 本来本节是想给大家介绍一个Gallery(画廊)的一个控 ...

  2. Android入门教程四十三之Spinner(列表选项框)的基本使用

    本来本节是想给大家介绍一个Gallery(画廊)的一个控件的,后来想想还是算了,因为 在Android 4.1后就已经被弃用了,尽管我们可以通过兼容不来使用Gallery,不过想想 还是算了,因为Ga ...

  3. Adapter类型控件之Spinner(列表选项框)

    (一)概述 相信大家对QQ的那"+"功能已经很熟悉了吧~没错那就是一个活生生的Spinner列表选项框; (二)相关属性 运行结果: <?xml version=" ...

  4. android spinner保存对象,Android Spinner默认值问题

    在我的应用程序中,我使用的微调器包含1到60个项目,用户必须从中选择其中的任何一个项目.我的问题是,当用户再次调用包含微调控件的活动时,用户可以看到他先前选择的项目作为微调器的默认值. 我尝试使用sp ...

  5. spinner列表选项框

    spinner就是一个列表选项框,不过Android的列表选择框不需要显示下拉列表,而是相当于弹出一个菜单功用户选择 Spinner和Gallery都继承了AbsSpinner,AdsSpinner继 ...

  6. android spinner 简书,【Android】Spinner:下拉列表笔记

    AdapterView使用方式都是类似的,都是通过适配器来适配数据源,然后将适配器设置到对应的AdapterView上进行显示 在Spinner中呈现自定义的一些属性值 a.在res-->val ...

  7. com.android.kyj.onj,Android 自学之列表选择框Spinner

    列表选择框(Spinner)与Swing编程里面的Spinner不同,这里的Spinner其实就是一个列表选项框. Spinner是ViewGroup的间接子类,因此他也可作为容器使用. Spinne ...

  8. 尚学堂JAVA基础学习笔记_2/2

    尚学堂JAVA基础学习笔记_2/2 文章目录 尚学堂JAVA基础学习笔记_2/2 写在前面 第10章 IO技术 1. IO入门 2. IO的API 3. 装饰流 4. IO实战 5. CommonsI ...

  9. Android如何愉快的使用Spinner列表选择框

    Android如何愉快的使用Spinner列表选择框 说实话 我刚学习的时候,感觉这就是网页上的select标签,不过,这个标签可以带图,哈哈 是不是感觉像 又到了我们粘贴代码的时间了 布局文件:ac ...

最新文章

  1. Datalist控件,Repeater控件如何分页?
  2. 完全隐藏Master Page Site Actions菜单只有管理员才可以看见
  3. 两个div叠加触发事件发生闪烁问题
  4. 源恩教育计算机,源恩计算机二级
  5. php pdo连接不成功,php – 为什么PDO在连接失败时打印我的密码?
  6. cookie 和 session 详解
  7. 【空间数据库技术】ArcSDE 10.1安装配置与企业级地理空间数据库的建立及连接
  8. mybatis源码解析(五) --- typehandler注册和处理的查询结果对象的类型转换
  9. 【写作技巧】本科毕业论文开题报告写作攻略
  10. 苹果cms模板_万词无限模板站群黑帽SEO利器
  11. 卷积神经网络的网络结构——Hourglass
  12. mysql explain结果信息_MySQL EXPLAIN 输出信息解读
  13. 数据分析复盘——相关理论之《增长黑客》
  14. vivado生成bit流错误:Combinatorial Loop Alert
  15. CAJ转pdf在线网址
  16. 南方cass怎么添加指北针_添加比例尺 指北针
  17. excel切片器_利用切片器制作动态交互图表
  18. Effective Modern C++ 条款1 理解模板类型推断
  19. 亲测好用!四款ps小白也能用的宣传印刷物料!
  20. 母婴商城可行性分析报告

热门文章

  1. 如何让光驱自动弹出和关闭?
  2. 数据结构--宿舍管理查询软件
  3. python学习指南—Python 进阶(Python Cookbook)
  4. iPhone 3GS iOS6.0.1不完美越狱教程+解锁
  5. 少儿编程:mBlock慧编程:程小奔
  6. 【SqlServer】测试数据库文件
  7. 记下默认端口为80的
  8. L2-2 点赞狂魔 (25 分)
  9. 无尽神域服务器维护,凝炼系统再升级!网易《无尽神域》版本更新 重磅内容新鲜看!...
  10. ACE 2005 Data Prep 数据预处理