建立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.csdn.net/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