Spinner组件组要用显示一个下拉列表,在使用中需要用到适配器Adapter,下面是一个该组件的使用示例
首先是布局文件main.xml:
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical" android:layout_width="fill_parent"
- android:layout_height="fill_parent">
- <Spinner android:id="@+id/spinner1" 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" android:layout_marginTop="20dp"/>
- </LinearLayout>
由于用到simpAdapter所以要写子项Item的布局如下 item。xml:
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="horizontal" android:layout_width="fill_parent"
- android:layout_height="wrap_content">
- <ImageView android:id="@+id/ivLogo" android:layout_width="60dp"
- android:layout_height="60dp" android:src="@drawable/icon"
- android:paddingLeft="10dp" />
- <TextView android:id="@+id/tvApplicationName" android:textColor="#000"
- android:layout_width="wrap_content" android:layout_height="fill_parent"
- android:textSize="16dp" android:gravity="center_vertical"
- android:paddingLeft="10dp" />
- </LinearLayout>
下面是代码:
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import android.app.Activity;
- import android.app.AlertDialog;
- import android.os.Bundle;
- import android.view.View;
- import android.widget.AdapterView;
- import android.widget.ArrayAdapter;
- import android.widget.SimpleAdapter;
- import android.widget.Spinner;
- import android.widget.AdapterView.OnItemSelectedListener;
- public class Main extends Activity
- {
- @Override
- public void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- //获取对象
- Spinner spinner1 = (Spinner) findViewById(R.id.spinner1);
- String[] applicationNames = new String[]
- { "多功能日历", "eoeMarket客户端", "耐玩的重力消砖块", "白社会", "程序终结者" };
- ArrayAdapter<String> aaAdapter = new ArrayAdapter<String>(this,
- android.R.layout.simple_spinner_item, applicationNames);
- // 将如下代码可以使列表项带RadioButton组件
- // aaAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
- spinner1.setAdapter(aaAdapter);
- Spinner spinner2 = (Spinner) findViewById(R.id.spinner2);
- final List<Map<String, Object>> items = new ArrayList<Map<String, Object>>();
- Map<String, Object> item1 = new HashMap<String, Object>();
- item1.put("ivLogo", R.drawable.calendar);
- item1.put("tvApplicationName", "多功能日历");
- Map<String, Object> item2 = new HashMap<String, Object>();
- item2.put("ivLogo", R.drawable.eoemarket);
- item2.put("tvApplicationName", "eoeMarket客户端");
- items.add(item1);
- items.add(item2);
- SimpleAdapter simpleAdapter = new SimpleAdapter(this, items,
- R.layout.item, new String[]
- { "ivLogo", "tvApplicationName" }, new int[]
- { R.id.ivLogo, R.id.tvApplicationName });
- spinner2.setAdapter(simpleAdapter);
- //为Spinner2加上监听事件
- spinner2.setOnItemSelectedListener(new OnItemSelectedListener()
- {
- @Override
- public void onItemSelected(AdapterView<?> parent, View view,
- int position, long id)
- {
- new AlertDialog.Builder(view.getContext()).setTitle(
- items.get(position).get("tvApplicationName")
- .toString()).setIcon(
- Integer.parseInt(items.get(position).get("ivLogo")
- .toString())).show();
- }
- @Override
- public void onNothingSelected(AdapterView<?> parent)
- {
- }
- });
- }
- }
转: http://294460620.iteye.com/blog/1176100