Android下拉菜单的定义和使用类似于ListView
首先在layout中定义Spinner
</pre><pre name="code" class="html"><Spinner
android:id="@+id/btn_change_phase"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical" />
<?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"
android:paddingBottom="4dp"
android:paddingLeft="13dp"
android:paddingRight="13dp"
android:paddingTop="4dp" >
<TextView
android:id="@+id/text_phase"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:text="小学"
android:textSize="22sp" />
</LinearLayout>
同样需要定义适配器
public class PhaseAdapter extends BaseAdapter {
//上下文
private Context context;
//视图
private LayoutInflater inflater;
//数据源
private List<String> listPhase;
public PhaseAdapter(Context context,List<String> listPhase){
this.context = context;
this.listPhase = listPhase;
this.inflater = LayoutInflater.from(context);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return listPhase.size();
}
@Override
public String getItem(int position) {
// TODO Auto-generated method stub
return listPhase.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) {
ViewHolder viewHolder;
//初始化视图
if(convertView == null){
convertView = inflater.inflate(R.layout.spinner_item, null);
viewHolder = new ViewHolder();
viewHolder.textView = (TextView) convertView.findViewById(R.id.text_phase);
convertView.setTag(viewHolder);
}else{
viewHolder = (ViewHolder) convertView.getTag();
}
//填充数据
viewHolder.textView.setText(listPhase.get(position));
return convertView;
}
public class ViewHolder{
private TextView textView;
}
}
默认选中项
// 将可选内容与Adapter连接起来
adapter = new PhaseAdapter(context, listPhase);
// 将adapter 添加到spinner中
spinner.setAdapter(adapter);
//默认选中的学段
spinner.setSelection(curPhaseIndex, true);
选中事件监听
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
curPhaseCode = "0"+String.valueOf(position+3);
new HttpGetSubjectByPhase(handler, "&phase="+curPhaseCode).start();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub
}
});