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
原创粉丝点击