首先是MainActivity

package com.example.spinnertest;import java.util.ArrayList;import java.util.List;import android.os.Bundle;import android.app.Activity;import android.content.Context;import android.text.TextUtils;import android.view.LayoutInflater;import android.view.Menu;import android.view.View;import android.view.ViewGroup;import android.widget.AdapterView;import android.widget.AdapterView.OnItemSelectedListener;import android.widget.ArrayAdapter;import android.widget.Spinner;import android.widget.TextView;import com.example.spinnertest.R;public class MainActivity extends Activity {    private Spinner myS;     private List<String> datas=new ArrayList<String>();    private MySpinnerAdapter sAdapter;    private String value;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        myS = (Spinner)findViewById(R.id.spinnerS);        initData();        sAdapter = new MySpinnerAdapter(this,datas);        myS.setAdapter(sAdapter);        refreshShowView();        myS.setOnItemSelectedListener(new OnItemSelectedListener() {            @Override            public void onItemSelected(AdapterView<?> arg0, View arg1,                    int arg2, long arg3) {                // TODO Auto-generated method stub                value = sAdapter.getItem(arg2);            }            @Override            public void onNothingSelected(AdapterView<?> arg0) {                // TODO Auto-generated method stub                            }        });    }    private void initData() {        // TODO Auto-generated method stub        datas.add("a");        datas.add("b");        datas.add("c");        datas.add("d");        datas.add("e");        datas.add("f");        value = datas.get(4);    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        // Inflate the menu; this adds items to the action bar if it is present.        getMenuInflater().inflate(R.menu.main, menu);        return true;    }        class MySpinnerAdapter extends  ArrayAdapter<String> {        private List<String> mList;        private Context mContext;        class ViewHolder {            public TextView spinnerTv;            public ViewHolder(View v){                spinnerTv = (TextView)v.findViewById(R.id.spinner_tv);            }        }        public MySpinnerAdapter(Context context,  List<String> list) {            super(context,R.layout.spinner_item,R.id.spinner_tv, list);            // TODO Auto-generated constructor stub            setData(list);            mContext = context;        }        public void setData(List<String> list){            mList = list;            notifyDataSetChanged();        }        @Override        public int getCount() {            // TODO Auto-generated method stub            if(mList==null){                return 0;            }            return mList.size();        }        @Override        public String getItem(int position) {            // TODO Auto-generated method stub            if(mList==null){                return null;            }            return mList.get(position);        }        @Override        public long getItemId(int position) {            // TODO Auto-generated method stub            return position;        }        @Override        public View getDropDownView(int position, View convertView, ViewGroup parent)        {             ViewHolder holder = null;            if(convertView==null){                convertView = LayoutInflater.from(mContext).inflate(                        R.layout.spinner_item, null);                holder= new ViewHolder(convertView);                convertView.setTag(holder);            }else{                holder = (ViewHolder)convertView.getTag();            }            String myListItem = mList.get(position);             holder.spinnerTv.setText(myListItem);            return convertView;         }            }        private void refreshShowView(){        if(!TextUtils.isEmpty(value)){            int i = 0;            for(String item:datas){                if(value.equals(item)){                    break;                }                i++;            }            if(i==datas.size()){                i = datas.size()-1;            }            myS.setSelection(i);        }    };}

然后是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:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    android:orientation="horizontal"    android:gravity="center_vertical"    tools:context=".MainActivity" >    <TextView         android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="标题"/>     <Spinner         android:id="@+id/spinnerS"         android:layout_width="0dp"         android:layout_weight="1"         android:layout_height="wrap_content"/>   </LinearLayout>

然后是spinner_item:

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="wrap_content"    >    <TextView        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:gravity="center"        android:paddingTop="10dp"        android:paddingBottom="10dp"        android:id="@+id/spinner_tv"/></RelativeLayout>

更多相关文章

  1. 无标题文章
  2. Android(安卓)去掉标题栏,状态栏,导航栏
  3. 文章标题
  4. android Dialog去掉标题栏 和边框
  5. Android(安卓)AsyncTask
  6. Android(安卓)自定义标题栏(title栏)
  7. Android中获取屏幕相关信息(屏幕大小,状态栏、标题栏高度)
  8. 调出软键盘 挤掉标题栏咋办
  9. Android全屏(包含3种隐藏顶部状态栏及标题栏和一种隐藏Android(安

随机推荐

  1. Android监测前后台切换
  2. Android中对XML文件的解析
  3. Android之放大镜实现的两种方式
  4. Android 自定义Button形状
  5. Android Jenkins中配置gradle项目遇到的
  6. Android自定义底部显示对话框
  7. Android Jetpack组件学习 Room
  8. android实现拖动效果
  9. android跳转到另一个类再返回当前类和值
  10. Android 根据源码详细讲解Handler