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

说实话 我刚学习的时候,感觉这就是网页上的select标签,不过,这个标签可以带图,哈哈

是不是感觉像
又到了我们粘贴代码的时间了

布局文件:activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"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"><TextView
        android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="选择您的排位分段"android:textColor="#44BDED"android:textSize="18sp" /><Spinner
        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" /><TextView
        android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:text="选择你的拿手英雄~"android:textColor="#F5684A"android:textSize="18sp" /><Spinner
        android:id="@+id/spin_two"android:layout_width="wrap_content"android:layout_height="64dp" /></LinearLayout>

展示视图控制文件:MainActivity

package run.yang.com.spinnerherodemo;import android.content.Context;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;import java.util.ArrayList;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<Hero> mData = null;private BaseAdapter myAdadpter = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mContext = MainActivity.this;mData = new ArrayList<Hero>();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<Hero>(mData,R.layout.item_spin_hero) {@Overridepublic 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);}@Overridepublic 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;}}@Overridepublic void onNothingSelected(AdapterView<?> parent) {}
}

写个Hero.java,大家再不陌生吧

package run.yang.com.spinnerherodemo;/*** Created by yang_zzheng on 2016/7/15* yangzhizheng2012@163.com*/
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;}
}

万能的BaseAdapter—->MyAdapter.java

package run.yang.com.spinnerherodemo;import android.content.Context;
import android.util.SparseArray;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;import java.util.ArrayList;/*** Created by yang_zzheng on 2016/7/15* yangzhizheng2012@163.com*/
public abstract class MyAdapter<T> extends BaseAdapter {private ArrayList<T> mData;private int mLayoutRes;           //布局idpublic MyAdapter() {}public MyAdapter(ArrayList<T> mData, int mLayoutRes) {this.mData = mData;this.mLayoutRes = mLayoutRes;}@Overridepublic int getCount() {return mData != null ? mData.size() : 0;}@Overridepublic T getItem(int position) {return mData.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {ViewHolder holder = ViewHolder.bind(parent.getContext(), convertView, parent, mLayoutRes, position);bindView(holder, getItem(position));return holder.getItemView();}public abstract void bindView(ViewHolder holder, T obj);//添加一个元素public void add(T data) {if (mData == null) {mData = new ArrayList<>();}mData.add(data);notifyDataSetChanged();}//往特定位置,添加一个元素public void add(int position, T data) {if (mData == null) {mData = new ArrayList<>();}mData.add(position, data);notifyDataSetChanged();}public void remove(T data) {if (mData != null) {mData.remove(data);}notifyDataSetChanged();}public void remove(int position) {if (mData != null) {mData.remove(position);}notifyDataSetChanged();}public void clear() {if (mData != null) {mData.clear();}notifyDataSetChanged();}public static class ViewHolder {private SparseArray<View> mViews;   //存储ListView 的 item中的Viewprivate View item;                  //存放convertViewprivate int position;               //游标private Context context;            //Context上下文//构造方法,完成相关初始化private ViewHolder(Context context, ViewGroup parent, int layoutRes) {mViews = new SparseArray<>();this.context = context;View convertView = LayoutInflater.from(context).inflate(layoutRes, parent, false);convertView.setTag(this);item = convertView;}//绑定ViewHolder与itempublic static ViewHolder bind(Context context, View convertView, ViewGroup parent,int layoutRes, int position) {ViewHolder holder;if (convertView == null) {holder = new ViewHolder(context, parent, layoutRes);} else {holder = (ViewHolder) convertView.getTag();holder.item = convertView;}holder.position = position;return holder;}@SuppressWarnings("unchecked")public <T extends View> T getView(int id) {T t = (T) mViews.get(id);if (t == null) {t = (T) item.findViewById(id);mViews.put(id, t);}return t;}/*** 获取当前条目*/public View getItemView() {return item;}/*** 获取条目位置*/public int getItemPosition() {return position;}/*** 设置文字*/public ViewHolder setText(int id, CharSequence text) {View view = getView(id);if (view instanceof TextView) {((TextView) view).setText(text);}return this;}/*** 设置图片*/public ViewHolder setImageResource(int id, int drawableRes) {View view = getView(id);if (view instanceof ImageView) {((ImageView) view).setImageResource(drawableRes);} else {view.setBackgroundResource(drawableRes);}return this;}/*** 设置点击监听*/public ViewHolder setOnClickListener(int id, View.OnClickListener listener) {getView(id).setOnClickListener(listener);return this;}/*** 设置可见*/public ViewHolder setVisibility(int id, int visible) {getView(id).setVisibility(visible);return this;}/*** 设置标签*/public ViewHolder setTag(int id, Object obj) {getView(id).setTag(obj);return this;}//其他方法可自行扩展}}

当然少不了我们的列表项目布局item_spin_hero.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="horizontal"android:padding="5dp"><ImageView
        android:id="@+id/img_icon"android:layout_width="48dp"android:layout_height="48dp"android:src="@mipmap/iv_lol_icon1" /><TextView
        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" /></LinearLayout>

单纯的数组资源myarrays.xml

<?xml version="1.0" encoding="utf-8"?>
<resources><string-array name="data"><item>英勇青铜</item><item>不屈白银</item><item>荣耀黄金</item><item>华贵铂金</item><item>璀璨钻石</item><item>超凡大师</item><item>最强王者</item></string-array>
</resources>

strings.xml这个不用解释吧

<resources><string name="app_name">SpinnerHeroDemo</string><string name="action_settings">Settings</string><string name="spin_title">分段选择</string>
</resources>

本文参考:

http://blog.csdn.net/coder_pig/article/details/48711881

Android如何愉快的使用Spinner列表选择框相关推荐

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

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

  2. 列表ListView和列表选择框的使用编写步骤

    (一)Spinner列表选择框的使用: 1.在Graphical Layout中拉出一个满意的界面. 2.给会用到的控件设置一个好记忆的和区分的id号,例如:布局名_控件名_对象名. 3.在布局文件中 ...

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

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

  4. Android仿IOS封装通用的弹出框Dialog和底部弹出列表选择框 仿美团顶部条件筛选框 附自定义ViewGroup

    弹出框 背景 提示与询问弹出框 实现 使用 列表选择框 实现 使用 顶部条件筛选框 实现 自定义ViewGroup 使用 总结 背景 鉴于Android提供的默认弹出框很一般,IOS的弹出框样式还不错 ...

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

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

  6. spinner列表选项框

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

  7. android 弹出框带标题栏,Android微信右上角弹出的对话选择框实现

     Android微信右上角弹出的对话选择框实现 我在之前的文章中曾给出了一个开源的微信UI大体实现方案具体代码实现,参见附录文章1.本文单单挑出一个微信的UI实现点:微信右上角弹出的选择对话框.如 ...

  8. android checkbox 文字和图标间距,CheckBox选择框和文字设置间距

    由于界面美观度的需求,需要自定义CheckBox的选择框. 传统的方法是先定义一个CheckBox的自定义style,如下: style中使用的checkbox_selector.xml 最后在布局文 ...

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

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

最新文章

  1. LDialog基于DialogFragment封装的库,也许是一个Nice的库
  2. pandas布尔索引
  3. 时间序列 线性回归 区别_时间序列分析的完整介绍(带R)::线性过程I
  4. 数据压缩 第二次作业
  5. 清空文件夹里面的所有文件和文件夹
  6. 创建和使用约束Constraint
  7. 麦咖啡MACfEE服务器安全防护设置技巧!
  8. mysql网吧管理系统_网吧管理系统(数据库)
  9. (XWZ)的Python学习笔记Ⅲ——面向对象高级编程
  10. 503热敏电阻温度阻值对应表
  11. 在linux下打开chm文件
  12. 计算机科学与因果关系,因果关系,概率和时间
  13. Firefox 火狐浏览器 windows 启用Flash
  14. Selenium如何使用句柄方式切换窗口?
  15. android系统profile文件路径,Android Profile Tools 入门
  16. 验证码(CAPTCHA)
  17. Gald to meet you
  18. 单片机可以用python编程吗,python可以单片机编程吗
  19. JSP内置对象Session——setAttribute/getAttibute/removeAttribute
  20. python plot画简单的曲线图

热门文章

  1. 关于Remote远程桌面连接 “出现内部错误” 的解决方法
  2. 苹果M1「徒有其表」?「地表最强」芯只能剪视频引知乎热议
  3. 《英文取名》未来五年名字使用人数预测 --- ​​​​​​​Python实现ARIMA模型
  4. Assert 断言常用工具类
  5. ENSP中路由器配置详解
  6. selenium+python自动登录淘宝问题
  7. layerUI的学习(一)
  8. 斐波那契数列三种实现+矩阵乘法+矩阵cimi
  9. TIP HBase 列 family和qualifier
  10. 【瞎写代码】特雷普学院,但是C语言之特别周约会寄