/* 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>