用户界面View之Spinner

据说程序员是最爱学习的群体,IT男都知道,这个行业日新月异,必须不断地学习新知识,不断地为自己注入新鲜的血液,才能使自己跟上技术的步伐。


本讲内容:Spinner 下拉列表


示例一:


下面是res/layout/activity_main.xml 布局文件:

<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:orientation="vertical" >

    <TextView
        android:id="@+id/id_city"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="城市:" 
        android:textSize="25sp"/>
    
    <Spinner 
        android:id="@+id/id_spinner"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

</LinearLayout>


下面是MainActivity主界面文件:

public class MainActivity extends Activity {
	private TextView city;
	private Spinner spinner;
	List<String> dataList;
	ArrayAdapter<String> adapter;
	
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		initViews();
	}

	/**
	 * 初始化控件
	 */
	private void initViews() {
		city=(TextView) findViewById(R.id.id_city);
		spinner=(Spinner) findViewById(R.id.id_spinner);
		adapter=new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item,getData());
		//设置spinner的UI格式  
		adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		spinner.setAdapter(adapter);
		spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
			public void onItemSelected(AdapterView<?> parent, View view,int position, long id) {
				//String cityName=dataList.get(position);
				String cityName=adapter.getItem(position);
				city.setText(cityName);
			}

			public void onNothingSelected(AdapterView<?> parent) {
				
			}
		});
	}
	
	/**
	 * 数据源
	 */
	private List<String> getData(){
		dataList=new ArrayList<String>();
		dataList.add("北京");
		dataList.add("上海");
		dataList.add("广州");
		dataList.add("深圳");
		return dataList;
	}
}


示例二:自定义布局


下面是res/layout/item.xml 布局文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    
    <ImageView 
        android:id="@+id/id_image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:layout_marginLeft="10dp"
        android:src="@drawable/pic1"/>
    
    <TextView 
        android:id="@+id/id_city"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_marginLeft="15dp"
        android:layout_toRightOf="@id/id_image"
        android:text="None"/>

</RelativeLayout>

下面是MainActivity.java主界面文件:

public class MainActivity extends Activity {
	private TextView city;
	private Spinner spinner;
	private List<Map<String,Object>> dataList;
	private SimpleAdapter adapter;
	
	int[] drawable={R.drawable.pic1,R.drawable.pic2,R.drawable.pic3,R.drawable.pic4};
	String[] name={"北京","上海","广州","深圳"};
	
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		initViews();
	}

	/**
	 * 初始化控件
	 */
	private void initViews() {
		city=(TextView) findViewById(R.id.id_city);
		spinner=(Spinner) findViewById(R.id.id_spinner);
		dataList = new ArrayList<Map<String, Object>>();
		adapter=new SimpleAdapter(this, getData(), R.layout.item, new String[] {"image","name"}, 
				new int[] {R.id.id_image,R.id.id_city});
		//设置spinner的UI格式  
		adapter.setDropDownViewResource(R.layout.item);
		spinner.setAdapter(adapter);
		spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
			public void onItemSelected(AdapterView<?> parent, View view,int position, long id) {
				//包括获取图片的id
//				String cityName=adapter.getItem(position)+"";
//				String cityName=dataList.get(position)+"";
				TextView name=(TextView) view.findViewById(R.id.id_city);
				String cityName=name.getText().toString();
				city.setText(cityName);
			}

			public void onNothingSelected(AdapterView<?> parent) {
				
			}
		});
	}
	
	/**
	 * 数据源
	 */
	private List<Map<String,Object>> getData(){
		for(int i=0;i<drawable.length;i++){
			Map<String,Object> map=new HashMap<String, Object>();
			map.put("image", drawable[i]);
			map.put("name", name[i]);
			dataList.add(map);
		}
		return dataList;
	}
}




Take your time and enjoy it 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值