现在的位置: 首页 > 综合 > 正文

Android spinner 普通用法和自定义用法

2017年01月16日 ⁄ 综合 ⁄ 共 2395字 ⁄ 字号 评论关闭

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

抱歉!评论已关闭.