android基本控件示例Spinner下拉列表(04)

/* simpleadapteractivity_main.xml,這個是自定義的下拉列表佈局,用來給activity_main.xml 佈局的下拉列表顯示圖片跟選項*/
public class SimpleApapterfMainActivity extends Activity {
	private Spinner sp;
	private TextView txt;
	private SimpleAdapter simpleadapter; 
	private int []image={R.drawable.bump,R.drawable.calculator,R.drawable.music,R.drawable.radio,R.drawable.rss,R.drawable.score
			,R.drawable.sky,R.drawable.talk};
	private String[]str={"小學","初中","高中","大學","研究生","碩士","博士","博士後"};//數據源 
		@Override
		protected void onCreate(Bundle savedInstanceState) {
			super.onCreate(savedInstanceState);
			setContentView(R.layout.activity_main);
			sp=(Spinner) this.findViewById(R.id.sp);
			txt=(TextView) this.findViewById(R.id.txt);
			//data是map鍵值對的數據,自定義類型要用本身定義數據
			List<Map<String, Object>> data=new ArrayList<Map<String,Object>>();
			//將前面定義的數組數據,裝載到data裏面
			for(int i=0;i<image.length;i++ ){
				Map<String ,Object>itemMap=new HashMap<String ,Object>();
				itemMap.put("header", image[i]);
				itemMap.put("name", str[i]);
				//這裏的"header"和"name"是隨便給的,只是到時候取值要記得本身的鍵去取值
				data.add(itemMap);
			}
			/**
			 * SimpleAdapter(context, data, resource, from, to) 
			 * context:上下文
			 * data:數據是map鍵值對,加到list集合中
			 * resource:自定義的佈局,如今用的安卓自帶的顯示佈局模式:android.R.layout.simple_list_item_1
			 * from:字符串類型的鍵
			 * to:整形的自定義佈局,即控件的id
			 */
			//將本身定義的佈局給適配器:本身建一個佈局文件R.layout.simpleadapteractivity_main
			simpleadapter=new 	SimpleAdapter(this, data, R.layout.simpleadapteractivity_main, new String[]{"header","name"}, new int[]{R.id.header,R.id.txt});
		   sp.setAdapter(simpleadapter);
		   //設置監聽
		   sp.setOnItemSelectedListener(new OnItemSelectedListener() {

			@Override
			public void onItemSelected(AdapterView<?> parent, View view,
					int position, long id) {

				//怎麼獲取自定義的內容
				//經過適配器獲取該位置的內容,也就是鍵key,再根據鍵key獲取內容鍵值
				Map<String ,Object>item=(Map<String, Object>) simpleadapter.getItem(position);
				Log.i("simpleAd", item+"");
				txt.setText(item.get("name")+"");
				Log.i("simpleAd", item.get("name")+"");
/*				//適配器獲取點擊的內容, ArrayAdapter
				//法1:
				String data1=sp.getSelectedItem().toString();
				//法2:
				String data2=parent.getSelectedItem().toString();
				//法3:
				String data3=parent.getItemAtPosition(position).toString();
				//法4:  
				//String data4=adapter.getItem(position);
				//txt.setText(data1+","+data2+","+data3+","+data4);			
*/			}

			@Override
			public void onNothingSelected(AdapterView<?> parent) {
				
			}
		});

		}
	     public void	submit(View view){
	    	 String data=sp.getSelectedItem().toString();
	    	 txt.setText(data);
	     }
}
//主佈局文件
<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"
     >
     <!-- 下拉列表 -->
    <Spinner
        android:id="@+id/sp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        />
        <Button
        android:id="@+id/submit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="提交"
        android:onClick="submit"
        />
       <TextView
        android:id="@+id/txt"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text=""
        />
        

</LinearLayout>

//自定義佈局文件
<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="horizontal"
     >
     <!-- 這個是自定義的下拉列表佈局,用來給activity_main.xml 佈局的下拉列表顯示圖片跟選項-->
        <!-- 這是跟選項顯示在下拉列表中的,因此圖片要小一下 android:scaleType="centerInside"根據圖片大小居中,不會拉伸 -->
        <ImageView
        android:id="@+id/header"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:scaleType="centerInside"
        />
       <TextView
        android:id="@+id/txt"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text=""
        android:gravity="center"
        />
        

</LinearLayout>
相關文章
相關標籤/搜索