Spinner控件的学习

 Spinner是AbsSpinner的子类
     该控件由选中显示区和一个下拉列表构成

     下拉列表中的被选中项将显示在显示区

     可以使用自定义的Adapter

Spinner使用案例:

      

package com.example.spinner;

import java.util.ArrayList;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ArrayAdapter;
import android.widget.Spinner;

public class MainActivity extends Activity {
    private String[] colors = {"赤","橙","黄","绿","青","蓝","紫"};
    
    private Spinner spi;
    private ArrayAdapter<String> adapter;
    
    private void setupView(){
    	spi = (Spinner)findViewById(R.id.spinner1);
    	adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,colors);
    	
    	adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    	spi.setAdapter(adapter);
    }
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		setupView();
	}
}

布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/container"
    android:orientation="vertical"
>
<Spinner 
    android:id="@+id/spinner1"
    android:layout_width="fill_parent"
    android:layout_height="40dp"/>
    
</LinearLayout>
 

自定义适配器使用Spinner:

          布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/container"
    android:orientation="vertical"
>
<Spinner 
    android:id="@+id/spinner1"
    android:layout_width="match_parent"
    android:layout_height="50dp"/>
    
</LinearLayout>
 

item.xml布局:

   

<?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="horizontal" >
    
    <ImageView 
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:src="@drawable/ic_launcher"
        android:scaleType="fitCenter"
        android:layout_marginRight="20dp"
        />
    <TextView 
        android:id="@+id/tvColor_CN"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1.0"
        android:layout_gravity="center_vertical"
        android:textSize="18sp"/>
    <TextView 
        android:id="@+id/tvColor_EN"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1.0"
        android:layout_gravity="center_vertical"
        android:textSize="18sp"/>
    
    
</LinearLayout>

对象:

    

package com.example.spinner1;

public class ColorName {
           private String name_cn;
           private String name_en;
		public String getName_cn() {
			return name_cn;
		}
		public void setName_cn(String name_cn) {
			this.name_cn = name_cn;
		}
		public String getName_en() {
			return name_en;
		}
		public void setName_en(String name_en) {
			this.name_en = name_en;
		}
           
}

自定义适配器:


package com.example.spinner1;

import java.util.List;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

public class MyAdapter extends BaseAdapter {

	private List<ColorName> mList;
	private Context mContext;
	
	
	public MyAdapter(Context mContext, List<ColorName> mList) {
		this.mList = mList;
		this.mContext = mContext;
	}

	@Override
	public int getCount() {
		// TODO Auto-generated method stub
		return mList.size();
	}

	@Override
	public Object getItem(int position) {
		// TODO Auto-generated method stub
		return mList.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) {
		// TODO Auto-generated method stub
		ViewHolder holder = null;
		if(convertView == null){
			LayoutInflater inflater = LayoutInflater.from(mContext);
		    convertView = inflater.inflate(R.layout.item, null);
		    holder = new ViewHolder();
		    holder.tvName_CN = (TextView)convertView.findViewById(R.id.tvColor_CN);
		    holder.tvName_EN = (TextView)convertView.findViewById(R.id.tvColor_EN);
		    convertView.setTag(holder);
		}else{
			holder = (ViewHolder) convertView.getTag();
		}
		
		ColorName c= mList.get(position);
		holder.tvName_CN.setText(c.getName_cn());
		holder.tvName_EN.setText(c.getName_en());
		return convertView;
	}
	
	class ViewHolder{
		private TextView tvName_CN;
		private TextView tvName_EN;
	}

}


主界面:

     

package com.example.spinner1;

import java.util.ArrayList;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Spinner;

public class MainActivity extends Activity {
    private Spinner spinner1;
    private MyAdapter adapter;
    
    private ArrayList<ColorName> getColorNames(){
    	ArrayList<ColorName> names = new ArrayList<ColorName>();
    	String[] color_name_cn = {"赤","橙","黄","绿","青","蓝","紫"};
    	String[] color_name_en = {"Red","Orange","Yellow","Green","Cyan","Blue","Violet"};
    	
    	for(int i=0;i<7;i++){
    		ColorName name = new ColorName();
    		name.setName_cn(color_name_cn[i]);
    		name.setName_en(color_name_en[i]);
    		
    		names.add(name);
    		
    	}
		return names;
    }
    
    private void setupView(){
    	spinner1 = (Spinner)findViewById(R.id.spinner1);
    	adapter = new MyAdapter(this,getColorNames());
    	spinner1.setAdapter(adapter);
    }
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		setupView();
	}
}


你可能感兴趣的:(Spinner控件的学习)