建立Spinner的适配器
- public class SpinnerAdapter extends BaseAdapter{
- private Context mContext;
- private Map<String, String> ports;
- private List<String> keys = new ArrayList<String>();
- public SpinnerAdapter(Context _mContext,Map<String, String> _ports)
- {
- mContext = _mContext;
- ports = _ports;
- for (String str : _ports.keySet()) {// 遍历set去出里面的的Key
- keys.add(str);
- }
- }
- @Override
- public int getCount() {
- // TODO Auto-generated method stub
- return keys.size();
- }
- @Override
- public Object getItem(int position) { //一般是得到key,id用于后台交互
- // TODO Auto-generated method stub
- return keys.get(position);
- }
- @Override
- public long getItemId(int position) {
- // TODO Auto-generated method stub
- return position;
- }
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- LayoutInflater _LayoutInflater=LayoutInflater.from(mContext);
- convertView=_LayoutInflater.inflate(R.layout.tran_spinner_item, null);
- if(convertView!=null)
- {
- TextView _TextView1=(TextView)convertView.findViewById(R.id.ports_name);
- TextView _TextView2=(TextView)convertView.findViewById(R.id.ports_id);
- _TextView1.setText(ports.get(keys.get(position)));
- _TextView2.setText(keys.get(position));
- }
- return convertView;
- }
- /**
- * 根据值, 设置spinner默认选中:
- * @param spinner
- * @param value
- */
- public static void setSpinnerItemSelectedByValue(Spinner spinner,String value){
- SpinnerAdapter apsAdapter= (SpinnerAdapter) spinner.getAdapter(); //得到SpinnerAdapter对象
- int k= apsAdapter.getCount();
- for(int i=0;i<k;i++){
- if(value.equals(apsAdapter.getItemValue(i))){
- spinner.setSelection(i,true);// 默认选中项
- break;
- }
- }
- }
- public String getItemValue(int position)
- {
- return ports.get(keys.get(position));
- }
- }
tran_spinner_item layout
- <?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="vertical" >
- <TextView
- android:id="@+id/ports_name"
- android:layout_width="wrap_content"
- android:layout_height="match_parent"
- android:textSize="20sp" />
- <TextView
- android:id="@+id/ports_id"
- android:layout_width="wrap_content"
- android:layout_height="match_parent"
- android:visibility="gone"/>
- </LinearLayout>
生成spinner
- private void createSpinner(Activity _mActivity,TableRow tr,TableItemNameValueShrink tt)
- {
- TableRow.LayoutParams trlpfe = new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT,
- TableRow.LayoutParams.WRAP_CONTENT);
- trlpfe.setMargins(0, 9, 0, 0);
- Spinner sp = new Spinner(_mActivity);
- sp.setLayoutParams(trlpfe);
- SpinnerAdapter _MyAdapter=new SpinnerAdapter(_mActivity, portsmap);
- //绑定Adapter
- sp.setAdapter(_MyAdapter);
- SpinnerAdapter.setSpinnerItemSelectedByValue(sp,tt.value.toString());
- tr.addView(sp);
- }
http://www.open-open.com/lib/view/open1330651497624.html
http://blog.youkuaiyun.com/ailiandeziwei/article/details/9164219
http://www.oschina.net/question/54100_33274
选中默认值
- public static void setSpinnerItemSelectedByValue(Spinner spinner,String value){
- SpinnerAdapter apsAdapter= (SpinnerAdapter) spinner.getAdapter(); //得到SpinnerAdapter对象
- int k= apsAdapter.getCount();
- for(int i=0;i<k;i++){
- if(value.equals(apsAdapter.getItemValue(i))){
- spinner.setSelection(i,true);// 默认选中项
- break;
- }
- }
- }
- public String getItemValue(int position)
- {
- return ports.get(keys.get(position));
- }
http://www.cnblogs.com/over140/archive/2010/09/25/1834469.html