天天看點

安卓控件使用系列25:Spinner下拉清單控件的使用方法

安卓中下拉清單控件是經常使用的控件之一,下面我們一起分享一下它的使用方法。

這個例子實作的是兩個下拉控件的效果,第一個下拉控件實作的是通過下拉選擇不同文字;第二個下拉控件實作的是通過下拉選擇不同的圖文混排。

整體思路:在xml檔案中添加兩個Spinner控件;定義一個MyAdapter類,在getData方法中傳回一個動态數組,數組中添加了幾個文字資訊,在getListMaps方法中傳回Map類型動态數組,數組中添加了幾個Map類型的圖文混排,這個類作為資料的擴充卡;在活動中定義一個ArrayAdapter類型的擴充卡擷取getData方法中資料,并綁定到第一個Spinner控件上,定義一個SimpleAdapter類型的擴充卡擷取getListMaps方法的資料,并綁定到第二個Spinner控件上;對第二個Spinner控件添加setOnItemSelectedListener這個事件,在事件中擷取目前選擇的文字資訊,并作為該應用程式的标題。

activity_main.xml檔案:

<LinearLayout 
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical"
        >
        
        <Spinner 
            android:id="@+id/spinner"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            />
        <Spinner 
            android:id="@+id/spinner2"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            />
    </LinearLayout>
           

MainActivity.java檔案:

private Spinner spinner;
   private Spinner spinner2;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		spinner=(Spinner)findViewById(R.id.spinner);
		List<String> list=MyAdapter.getData();
		ArrayAdapter<String> adapter=new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_spinner_item,list);
		spinner.setAdapter(adapter);
		
		spinner2=(Spinner)findViewById(R.id.spinner2);
		//List<Map<String,Object>>
		List<Map<String, Object>> listmaps=MyAdapter.getListMaps();
		SimpleAdapter simpleAdapter=new SimpleAdapter(MainActivity.this,listmaps,R.layout.item,new String[]{"ivLogo","applicationName"},new int[]{R.id.imageview,R.id.textview});
		spinner2.setAdapter(simpleAdapter);
		spinner2.setOnItemSelectedListener(new OnItemSelectedListener() {

			@Override
			public void onItemSelected(AdapterView<?> parent, View view,
					int position, long id) {
				// TODO Auto-generated method stub
				String appName=((Map<String, Object>)spinner2.getItemAtPosition(position)).get("applicationName").toString();
				setTitle(appName);
			}

			@Override
			public void onNothingSelected(AdapterView<?> arg0) {
				// TODO Auto-generated method stub
				
			}
		});
	}
           

MyAdapter.java檔案:

public class MyAdapter {

	public MyAdapter() {
		// TODO Auto-generated constructor stub
	}
	
	public static List<String> getData(){
		List<String> list=new ArrayList<String>();
		list.add("北京");
		list.add("上海");
		list.add("廣州");
		return list;
	}
    public static List<Map<String, Object>> getListMaps(){
    	List<Map<String, Object>> list=new ArrayList<Map<String,Object>>();
    	Map<String, Object> map1=new HashMap<String, Object>();
    	map1.put("ivLogo", R.drawable.btn_dialog);
    	map1.put("applicationName", "羅志祥");
    	
    	Map<String, Object> map2=new HashMap<String, Object>();
    	map2.put("ivLogo", R.drawable.btn_default);
    	map2.put("applicationName", "庾澄慶");
    	list.add(map1);
    	list.add(map2);
    	
    	return list;
    }
}