2.8 Spinner 列表选项框
来源:互联网 发布:好用的旅游软件知乎 编辑:程序博客网 时间:2024/05/18 02:50
一、布局文件代码
1、新建一个xml文件,命名myarrays,代码如下:
<?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>
2、新建一个xml文件,命名item_spin_hero,代码如下:
<?xml version="1.0" encoding="utf-8"?><RelativeLayout 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:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" 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:spinnerMode="dialog" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="100dp" android:text="请选择日期:" android:textColor="#F5684A" android:textSize="18sp" /> <Spinner android:id="@+id/spin_two" android:layout_width="wrap_content" android:layout_height="64dp" android:layout_marginTop="150dp" /></RelativeLayout>
3、activity_main.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" > <ImageView android:id="@+id/img_icon" android:layout_width="48dp" android:layout_height="48dp" /> <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:textSize="16sp" /></LinearLayout>
Java代码
1、新建一个java类,命名为:Hero,添加如下代码:
package com.example.yuancan.test1010001;/** * Created by yuancan on 16/10/10. */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; }}
2、新建一个java类,命名为MyAdapter,添加如下代码:
package com.example.yuancan.test1010001;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 yuancan on 16/10/10. */public abstract class MyAdapter<T> extends BaseAdapter { private ArrayList<T> mData; private int mLayoutRes; //布局id public MyAdapter() { } public MyAdapter(ArrayList<T> mData, int mLayoutRes) { this.mData = mData; this.mLayoutRes = mLayoutRes; } @Override public int getCount() { return mData != null ? mData.size() : 0; } @Override public T getItem(int position) { return mData.get(position); } @Override public long getItemId(int position) { return position; } @Override public 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 static class ViewHolder { private SparseArray<View> mViews; private View item; private int position; private Context context; ImageView img_icon; TextView txt_content; 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; } public 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; } 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; } }}
3、MainActivity添加如下代码:
package com.example.yuancan.test1010001;import android.content.Context;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Adapter;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; private boolean one_selected = false; private boolean two_selected = false; private ArrayList<Hero> 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<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.drawable.avator_smaller,"10月01日")); mData.add(new Hero(R.drawable.avator_smaller,"10月02日")); mData.add(new Hero(R.drawable.avator_smaller,"10月03日")); mData.add(new Hero(R.drawable.avator_smaller,"10月04日")); mData.add(new Hero(R.drawable.avator_smaller,"10月05日")); mData.add(new Hero(R.drawable.avator_smaller,"10月06日")); mData.add(new Hero(R.drawable.avator_smaller,"10月07日")); myAdadpter = new MyAdapter<Hero>(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) { }}
效果图
1、点击选择星期:
2、点击选择日期:
0 0
- 2.8 Spinner 列表选项框
- 动态添加/删除Spinner列表选项框
- 动态添加/删除Spinner列表选项框
- Adapter类型控件之Spinner(列表选项框)
- 下拉列表框spinner
- Spinner:列表选择框
- 列表选择框spinner
- 下拉列表框Spinner
- 列表选择框spinner
- 下拉列表框Spinner
- 列表选择框Spinner
- Android基础入门教程——2.4.10 Spinner(列表选项框)的基本使用
- Android开发总结笔记 Spinner(列表选项框) 1-1-15
- android-UI组件实例大全(十)------Adapter类Four之Spinner列表选项框
- Android--下拉列表框(Spinner)
- 适配器创建Spinner列表框
- 列表选择框(Spinner)
- android自定义Spinner下拉列表框样式
- 栈的基本操作
- 【论文笔记】HyperFace: ADeep Multi-task Learning Framework for Face Detection
- Android六大界面布局
- Android常用的框架有哪些
- 基于struts2的文件上传
- 2.8 Spinner 列表选项框
- BITCS2016程序设计 | 3. 扫雷
- Hibernate从入门到精通(七)多对一单向关联映射
- java操作excel(jxl)
- 渗透测试:sqlmap伪静态注入与携带cookie登录认证注入
- rsyslog 解决日志截断不读取问题
- Scala 中不带括号的函数与带括号函数的差别
- OSG学习笔记15-OSG中对事件的处理
- JavaScript学习笔记(7)