1.利用ArrayAdapter实现spinner的普通用法
private String[] contents={"red","orange","green","blue","yellow"};
private Spinner spinner;
private TextView textView;
ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_spinner_dropdown_item,contents);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new OnItemSelectedListener(){
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
textView.setText(contents[position]);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub
}
});
2.继承BaseAdapter实现自定义adapter
spinner现实的内容,如TextView+ ImageView
1> custom_spinner_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal">
<TextView
android:id="@+id/text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<ImageView
android:id="@+id/image_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/show_image"/>
</LinearLayout>
2>定义MyAdapter
public class MyAdapter extends BaseAdapter {
private Context context;
private String[] contents;
private LayoutInflater flater;
public MyAdapter(Context context,String[] contents){
this.context = context;
this.contents = contents;
this.flater = LayoutInflater.from(context);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return contents.length;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return contents[position];
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
MyView myView;
if(convertView == null){
myView = new MyView();
convertView = flater.inflate(R.layout.custom_spinner_layout, null);
myView.imageView = (ImageView)convertView.findViewById(R.id.image_view);
myView.textView = (TextView) convertView.findViewById(R.id.text_view);
convertView.setTag(myView);
}else{
myView = (MyView)convertView.getTag();
}
myView.imageView.setBackgroundResource(R.drawable.show_image);
myView.textView.setText(contents[position]);
return convertView;
}
class MyView{
public ImageView imageView;
public TextView textView;
}
}
3>调用自定义的MyAdapter
MyAdapter myAdapter = new MyAdapter(this,contents);
spinner.setAdapter(myAdapter);