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);