首页 > 其他分享 >Android高级控件之下拉框和几种适配器

Android高级控件之下拉框和几种适配器

时间:2023-01-26 22:56:13浏览次数:66  
标签:控件 Map 适配器 设置 集合 下拉框

7.1下拉框

首先介绍下拉框在xml文件中的两种表达形式,再介绍在代码中的两种写法

在xml文件中,下拉框控件Spinner的写法如下所示:

<Spinner  android:id="@id/sp_XXX"  

     android:layout_width = "match_parent" android:layout_height = "wrap_content"

android:spinnerMode="dropdown或者dialog"

这里要强调:设置为dropdown值将采取下拉模式 设置为dialog值将采取弹出对话框的形式。 选中某一项后会在下拉框展示、这里若想设置监听事件,需要实现接口OnItemSelectedListener

其次是在java代码中

Spinner类的对象有四个常用方法,如下所示:

setPrompt;//设置标题文字   setAdapter://设置数据适配器   setSelection//设置当前选中哪一项,形参的值为int类型,从0开始,0代表第一个元素

setOnItemSelectedListener设置下拉列表的选择监听器

介绍完下拉框的基本用法之后,开始介绍适配器

适配器介绍:

首先是数组适配器ArrayAdapter,具体使用如下所示:

ArrayAdapter <String> adapter = new ArrayAdapter<String>(this,R.layout.item_select,array)

//这里对形参一一进行解释,this是活动.this,也就是context上下文对象,item_select是一个xml配置文件,里面只能有一个<TextView>控件,用于对文字和背景进行个性化设置

array是一个数组,这个数组的类型只能是基本数据类型,不过要注意,这里用到了泛型,所以尖括号里面的类型应该使用基本数据类型的包装类

声明完adapter之后,在Spinner对象中调用setAdapter方法,把adapter传进去。

设置监听器的操作代码,这里就不写了,交给读者自行完成。

其次再来介绍简单适配器,只做了解即可(后面的基本适配器用的较多)

SimpleAdapter adapter = new SimpleAdapter(this,list,R,layout.item_simple,new String[]{"icon","name"},new int[]{R.id.icon,R.id.tv_name};

这里解释一下每个参数,首先this是上下文,list是一个集合,这个集合元素的类型是一个Map类型的,包含键和值,键是元素的名字,值是元素的位置。

第三个参数是布局文件,第四个参数是Map集合的key,第五个参数是Map集合的value,这里要注意,list集合的类型的Map<>,Map也是一个集合,Map集合可以有多个元素

所以间接地,一个List对象应该包含多个元素,最后把这个Adapter适配器设置给Spinner或者ListView、GridView,就能实现对应的效果

然后再来介绍我们的重点,基本适配器BaseAdapter

基本适配器提供的功能更为强大,我们通常把基本适配器写在一个单独的文件里面,这是和上方两个适配器不同的地方。

其次,BaseAdapter是一个抽象类,所以需要自己写一个实现类,并重写几个方法。

从BaseAdapter派生的数据适配器主要实现下面5个方法

构造方法:这个构造方法一般提供两个形参,一个是上下文context、另一个是List集合、集合的元素类型为JavaBean类型,通常再封装起来写成一个类

getCount:获取列表项的个数    getItem:获取列表项的数据   getItemId:获取列表项的编号

getView:获取每项的展示视图,并对每项的内部控件进行业务处理(说白了就是设置文字图片等等),这是最重要的一个方法

在进行一番实践后,我对基本适配器的理解就是,我在LIstViewActivity活动中new一个Adapter适配器,再set给ListView,这个适配器对象会自动执行我们重写的所有方法

 

 这里简单放一个关于getView的图,基本的操作我就不说了,这里要注意Holder类可用可不用,我可以直接通过LayoutInflater.from(mcontext).inflate()方法得到的View

对这个View进行里面的控件的业务处理,写一个Holder类,会增强可读性,这个类封装了item配置文件中的所有控件。

这里重点讲解一下,下面这行代码的注意事项

LayoutInflater.from(mContext).inflate(R.layout.item_listview,null);

这篇文章写的很好,解决了我初学时候的疑问,大伙可以看一看(37条消息) 关于LayoutInflater.from(context).inflate()的使用的问题_叫你一声逗比你敢答应吗的博客-CSDN博客_layoutinflater.from(

 

标签:控件,Map,适配器,设置,集合,下拉框
From: https://www.cnblogs.com/laohei114514/p/17068362.html

相关文章

  • Repeater控件分列显示
     今天有学生问如何用Repeater控件进行分列显示,以前进行分列显示时,要么完全自定义输出,要么使用DataList控件,可就是没有用过Repeater控件,又懒得动脑了,从网上搜了一下,得到如下......
  • 解决C#用BindingSource控件绑定数据源时产生的错误
    今天在VS2008中用BindingSource控件绑定SQL2005数据库时出现了一个错误,提示信息如下:错误信息:未能从程序集Microsoft.VisualStudio.DataDesign.SyncDesigner.DslPackage,V......
  • Substitution 控件学习
    Substitution控件用在配置为需要进行缓存的ASP.NET网页上。Substitution 动态更新缓存页的部分 缓存某个ASP.NET页时,默认情况下会缓存该页的全部输出。在第一次请求......
  • Dev控件GridView设置奇偶颜色不同
    设置隔行变色。首先设置显示隔行变色,步骤:OptionsView-->EnableAppearanceEvenRow-->true和OptionsView-->EnableAppearanceOddRow-->true; 然后设置奇数行和偶数行样......
  • 适配器模式
    适配器模式p...概括:在适配器类Adapter中,将现有接口Adaptee中的方法作为数据源传入适配器类,然后转换成目标接口Target中的方法。如果客户端要调用,那么就调用Adapter......
  • 用pageOffice控件实现 office 文档在线编辑Word插入另外word文档的功能
    OA办公中,业务需要编辑word文档,需要插入另外word文档的功能。怎么实现编辑word文档插入另外word文档呢?2实现方法通过pageOffice实现简单的在线打开编辑word时,通过设置......
  • QFRemoteDataSet三层控件使用说明
    QFRemoteDataSet三层控件使用说明QFRemoteDataSet     |      |----Client_demo      |----Components      |----ser......
  • 用pageOffice控件实现 office 文档在线编辑Word 打开文档后在页面里触发事件
    OA办公中,业务需要编辑打开word文档后执行一些js操作怎么实现编辑打开word文档后执行一些js操作呢?2实现方法通过pageOffice实现简单的在线打开编辑word时,通过设置关......
  • 控制.NET自定义控件的属性是否显示在属性面板
    [Browsable(false)]publicboolIsDispNum{set{this.isDispNum=value;}get{returnthis.isDispNum;}}......
  • 下拉框的label值文本值
    一、前言1、mark本来一开始是想的,在change事件里面,有个参数叫text的,结果没有。底层应该不支持,其它方式应该可以,到时候看看黎大神给的方案。目前可行的感觉就这种change:......