http://www.open-open.com/lib/view/open1330651497624.html

今天学习了Spinner组件,使用Spinner相当于从下拉列表中选择项目,下面演示一下Spinner的使用(分别使用ArrayAdapter和自定义Adapter实现)

(一):使用ArrayAdapter进行适配数据:

①:首先定义一个布局文件:

01 <spanstyle="font-size:16px;"><?xmlversion="1.0"encoding="utf-8"?>
02 <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
03 android:layout_width="fill_parent"
04 android:layout_height="fill_parent"
05 android:orientation="vertical">
06
07 <Spinner
08 android:id="@+id/spinner1"
09 android:layout_width="match_parent"
10 android:layout_height="wrap_content"
11 />
12 </LinearLayout></span>
【注意:】上面的Spinner有两个属性1:prompt是初始的时候,Spinner显示的数据,是一个引用类型 2:entries是直接在xml布局文件中绑定数据源(可以不设置,即可以在Activity中动态绑定)

②:建立数据源,使用数组,这些数据将会在Spinner下来列表中进行显示:

1 <spanstyle="font-size:16px;"><?xmlversion="1.0"encoding="utf-8"?>
2 <resources>
3 <string-arrayname="spinnername">
4 <item>北京</item>
5 <item>上海 </item>
6 <item>广州</item>
7 <item>深圳</item>
8 </string-array>
9 </resources></span>

③:接着在Activity中加入如下的代码(使用了系统定义的下拉列表的布局文件,当然也可以自定义)

1 // 初始化控件
2 mSpinner = (Spinner) findViewById(R.id.spinner1);
3 // 建立数据源
4 String[] mItems = getResources().getStringArray(R.array.spinnername);
5 // 建立Adapter并且绑定数据源
6 ArrayAdapter<String> _Adapter=newArrayAdapter<String>(this,android.R.layout.simple_spinner_item, mItems);
7 //绑定 Adapter到控件
8 mSpinner.setAdapter(_Adapter);

以上代码初步完成,看下运行效果:

下面是关于Spinner的点击事件(效果图如上图):

01 mSpinner.setOnItemSelectedListener(newOnItemSelectedListener() {
02 @Override
03 publicvoidonItemSelected(AdapterView<?> parent, View view,
04 intposition,longid) {
05 String str=parent.getItemAtPosition(position).toString();
06 Toast.makeText(SpinnerActivity.this,"你点击的是:"+str,2000).show();
07 }
08 @Override
09 publicvoidonNothingSelected(AdapterView<?> parent) {
10 // TODO Auto-generated method stub
11 }
12 });

(二)使用自定义的Adapter(重点)

①:定义每一个Item的布局文件

01 <?xmlversion="1.0"encoding="utf-8"?>
02 <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
03 android:layout_width="match_parent"
04 android:layout_height="match_parent"
05 android:orientation="horizontal">
06
07 <TextView
08 android:id="@+id/textView1"
09 android:layout_width="wrap_content"
10 android:layout_height="wrap_content"
11 android:drawableLeft="@drawable/ic_launcher"
12 android:paddingRight="8dip"
13 android:paddingTop="8dip"
14 android:text="TextView"
15 android:textSize="25sp"/>
16
17 <TextView
18 android:id="@+id/textView2"
19 android:layout_width="wrap_content"
20 android:layout_height="wrap_content"
21 android:paddingLeft="8dip"
22 android:paddingTop="8dip"
23 android:text="TextView"
24 android:textSize="25sp"/>
25
26 </LinearLayout>
②:建立Person类:
01 packagecom.jiangqq.csdn;
02 publicclassPerson {
03 privateString personName;
04 privateString personAddress;
05 publicPerson(String personName, String personAddress) {
06 super();
07 this.personName = personName;
08 this.personAddress = personAddress;
09 }
10 publicString getPersonName() {
11 returnpersonName;
12 }
13 publicvoidsetPersonName(String personName) {
14 this.personName = personName;
15 }
16 publicString getPersonAddress() {
17 returnpersonAddress;
18 }
19 publicvoidsetPersonAddress(String personAddress) {
20 this.personAddress = personAddress;
21 }
22
23 }
③:创建MyAdapter继承与BaseAdapter,进行适配:
01 packagecom.jiangqq.csdn;
02
03 importjava.util.List;
04 importandroid.content.Context;
05 importandroid.view.LayoutInflater;
06 importandroid.view.View;
07 importandroid.view.ViewGroup;
08 importandroid.widget.BaseAdapter;
09 importandroid.widget.TextView;
10
11 /**
12 * 自定义适配器类
13 * @author jiangqq <a href=http://blog.csdn.net/jiangqq781931404></a>
14 *
15 */
16 publicclassMyAdapterextendsBaseAdapter {
17 privateList<Person> mList;
18 privateContext mContext;
19
20 publicMyAdapter(Context pContext, List<Person> pList) {
21 this.mContext = pContext;
22 this.mList = pList;
23 }
24
25 @Override
26 publicintgetCount() {
27 returnmList.size();
28 }
29
30 @Override
31 publicObject getItem(intposition) {
32 returnmList.get(position);
33 }
34
35 @Override
36 publiclonggetItemId(intposition) {
37 returnposition;
38 }
39 /**
40 * 下面是重要代码
41 */
42 @Override
43 publicView getView(intposition, View convertView, ViewGroup parent) {
44 LayoutInflater _LayoutInflater=LayoutInflater.from(mContext);
45 convertView=_LayoutInflater.inflate(R.layout.item,null);
46 if(convertView!=null)
47 {
48 TextView _TextView1=(TextView)convertView.findViewById(R.id.textView1);
49 TextView _TextView2=(TextView)convertView.findViewById(R.id.textView2);
50 _TextView1.setText(mList.get(position).getPersonName());
51 _TextView2.setText(mList.get(position).getPersonAddress());
52 }
53 returnconvertView;
54 }
55 }
④:在Activity中加入如下代码:
01 // 初始化控件
02 mSpinner = (Spinner) findViewById(R.id.spinner1);
03 // 建立数据源
04 List<Person> persons=newArrayList<Person>();
05 persons.add(newPerson("张三","上海 "));
06 persons.add(newPerson("李四","上海 "));
07 persons.add(newPerson("王五","北京"));
08 persons.add(newPerson("赵六","广州 "));
09 // 建立Adapter绑定数据源
10 MyAdapter _MyAdapter=newMyAdapter(this, persons);
11 //绑定Adapter
12 mSpinner.setAdapter(_MyAdapter);
运行效果如下截图:


监听事件和第一种方法相同:


更多相关文章

  1. Android服务混合调用startService(intent)和bindService(intent,
  2. delphi xe5 android sample 中的 SimpleList 是怎样绑定的
  3. Android(安卓)DataBinding
  4. android开发学习2——hello world
  5. 也来遵守android UI 规范--GridView主界面设计
  6. Android(安卓)菜单(OptionMenu)大全 建立你自己的菜单(补充)
  7. Android控件之ListView
  8. android 建立sdcard 并放文件 在程序中取文件
  9. Android建立用户接口

随机推荐

  1. Android(安卓)源码编译so,jar
  2. android VoiceRecognition 语音识别并打
  3. android根据应用方向自动旋转的自定义vie
  4. Android(安卓)多线程下载
  5. android包重复问题
  6. Unity3d 调用Android震动
  7. Android(安卓)文件操作工具类
  8. Android(安卓)TimeUtile日期处理工具类(
  9. android Error inflating class com.goog
  10. Android(安卓)开发艺术探索 源码地址