服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Android - Android自定义Spinner下拉列表(使用ArrayAdapter和自定义Adapter实现)

Android自定义Spinner下拉列表(使用ArrayAdapter和自定义Adapter实现)

2021-04-04 15:35Android开发网 Android

这篇文章主要介绍了Android自定义Spinner下拉列表(使用ArrayAdapter和自定义Adapter实现)的相关资料,需要的朋友可以参考下

今天学习了spinner组件的使用,非常好用的一款组件,相当于从下拉列表中选择项目,今天收获颇多,下面给大家演示一下spinner的使用(分别使用arrayadapter和自定义adapter实现),具体内容如下。

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
<span style="font-size:16px;"><?xml version="1.0" encoding="utf-8"?>
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:orientation="vertical" >
 
  <spinner
    android:id="@+id/spinner1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
   />
</linearlayout></span>

  【注意:】上面的spinner有两个属性1:prompt是初始的时候,spinner显示的数据,是一个引用类型   2:entries是直接在xml布局文件中绑定数据源(可以不设置,即可以在activity中动态绑定) 

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

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

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

?
1
2
3
4
5
6
7
8
    // 初始化控件
mspinner = (spinner) findviewbyid(r.id.spinner1);
// 建立数据源
string[] mitems = getresources().getstringarray(r.array.spinnername);
// 建立adapter并且绑定数据源
arrayadapter<string> _adapter=new arrayadapter<string>(this,android.r.layout.simple_spinner_item, mitems);
//绑定 adapter到控件
mspinner.setadapter(_adapter);

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

Android自定义Spinner下拉列表(使用ArrayAdapter和自定义Adapter实现)

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

?
1
2
3
4
5
6
7
8
9
10
11
12
mspinner.setonitemselectedlistener(new onitemselectedlistener() {
  @override
  public void onitemselected(adapterview<?> parent, view view,
      int position, long id) {
    string str=parent.getitematposition(position).tostring();
    toast.maketext(spinneractivity.this, "你点击的是:"+str, 2000).show();
  }
  @override
  public void onnothingselected(adapterview<?> parent) {
    // todo auto-generated method stub
  }
});

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?xml version="1.0" encoding="utf-8"?>
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="horizontal" >
  <textview
    android:id="@+id/textview1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:drawableleft="@drawable/ic_launcher"
    android:paddingright="8dip"
    android:paddingtop="8dip"
    android:text="textview"
    android:textsize="25sp" />
  <textview
    android:id="@+id/textview2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:paddingleft="8dip"
    android:paddingtop="8dip"
    android:text="textview"
    android:textsize="25sp" />
</linearlayout>

        ②:建立person类:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package com.jiangqq.csdn;
public class person {
  private string personname;
  private string personaddress;
  public person(string personname, string personaddress) {
    super();
    this.personname = personname;
    this.personaddress = personaddress;
  }
  public string getpersonname() {
    return personname;
  }
  public void setpersonname(string personname) {
    this.personname = personname;
  }
  public string getpersonaddress() {
    return personaddress;
  }
  public void setpersonaddress(string personaddress) {
    this.personaddress = personaddress;
  }
 
}

     ③:创建myadapter继承与baseadapter,进行适配:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package com.jiangqq.csdn;
import java.util.list;
import android.content.context;
import android.view.layoutinflater;
import android.view.view;
import android.view.viewgroup;
import android.widget.baseadapter;
import android.widget.textview;
/**
 * 自定义适配器类
 * @author jiangqq <a href=http://blog.csdn.net/jiangqq781931404></a>
 *
 */
public class myadapter extends baseadapter {
  private list<person> mlist;
  private context mcontext;
  public myadapter(context pcontext, list<person> plist) {
    this.mcontext = pcontext;
    this.mlist = plist;
  }
  @override
  public int getcount() {
    return mlist.size();
  }
  @override
  public object getitem(int position) {
    return mlist.get(position);
  }
  @override
  public long getitemid(int position) {
    return position;
  }
  /**
   * 下面是重要代码
   */
  @override
  public view getview(int position, view convertview, viewgroup parent) {
    layoutinflater _layoutinflater=layoutinflater.from(mcontext);
    convertview=_layoutinflater.inflate(r.layout.item, null);
    if(convertview!=null)
    {
      textview _textview1=(textview)convertview.findviewbyid(r.id.textview1);
      textview _textview2=(textview)convertview.findviewbyid(r.id.textview2);
      _textview1.settext(mlist.get(position).getpersonname());
      _textview2.settext(mlist.get(position).getpersonaddress());
    }
    return convertview;
  }
}

④:在activity中加入如下代码:

?
1
2
3
4
5
6
7
8
9
10
11
12
// 初始化控件
mspinner = (spinner) findviewbyid(r.id.spinner1);
// 建立数据源
list<person> persons=new arraylist<person>();
persons.add(new person("张三", "上海 "));
persons.add(new person("李四", "上海 "));
persons.add(new person("王五", "北京" ));
persons.add(new person("赵六", "广州 "));
// 建立adapter绑定数据源
myadapter _myadapter=new myadapter(this, persons);
//绑定adapter
mspinner.setadapter(_myadapter);

运行效果如下截图:

Android自定义Spinner下拉列表(使用ArrayAdapter和自定义Adapter实现)

  Android自定义Spinner下拉列表(使用ArrayAdapter和自定义Adapter实现)

延伸 · 阅读

精彩推荐
  • AndroidAndroid程序设计之AIDL实例详解

    Android程序设计之AIDL实例详解

    这篇文章主要介绍了Android程序设计的AIDL,以一个完整实例的形式较为详细的讲述了AIDL的原理及实现方法,需要的朋友可以参考下...

    Android开发网4642021-03-09
  • AndroidAndroid实现Service获取当前位置(GPS+基站)的方法

    Android实现Service获取当前位置(GPS+基站)的方法

    这篇文章主要介绍了Android实现Service获取当前位置(GPS+基站)的方法,较为详细的分析了Service基于GPS位置的技巧,具有一定参考借鉴价值,需要的朋友可以参考下...

    Ruthless8342021-03-31
  • AndroidAndroid中AsyncTask详细介绍

    Android中AsyncTask详细介绍

    这篇文章主要介绍了Android中AsyncTask详细介绍,AsyncTask是一个很常用的API,尤其异步处理数据并将数据应用到视图的操作场合,需要的朋友可以参考下...

    Android开发网7452021-03-11
  • AndroidAndroid界面效果UI开发资料汇总(附资料包)

    Android界面效果UI开发资料汇总(附资料包)

    android ui界面设计,友好的界面会提高用户体验度;同时也增强了android ui界面设计的难度,本文提供了一些常用开发资料(有下载哦)感兴趣的朋友可以了解下...

    Android开发网4672021-01-03
  • AndroidAndroid CardView+ViewPager实现ViewPager翻页动画的方法

    Android CardView+ViewPager实现ViewPager翻页动画的方法

    本篇文章主要介绍了Android CardView+ViewPager实现ViewPager翻页动画的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    Abby代黎明9602022-03-02
  • Android汇总Android视频录制中常见问题

    汇总Android视频录制中常见问题

    这篇文章主要汇总了Android视频录制中常见问题,帮助大家更好地解决Android视频录制中常见的问题,需要的朋友可以参考下...

    yh_thu5192021-04-28
  • AndroidAndroid编程解析XML方法详解(SAX,DOM与PULL)

    Android编程解析XML方法详解(SAX,DOM与PULL)

    这篇文章主要介绍了Android编程解析XML方法,结合实例形式详细分析了Android解析XML文件的常用方法与相关实现技巧,需要的朋友可以参考下...

    liuhe68810052021-05-03
  • AndroidAndroid实现固定屏幕显示的方法

    Android实现固定屏幕显示的方法

    这篇文章主要介绍了Android实现固定屏幕显示的方法,实例分析了Android屏幕固定显示所涉及的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下...

    鉴客6192021-03-27