安卓开发 之小白养成-Android高级控件

  • Spinner(下拉列表)
  • Spinner提供一个快速的方法从一组选择一个值,在默认状态Spinner显示当前选择的值,触摸Spinner与所有其他可用值显示一个下拉菜单,用户可以选择一个新的。
    1. 常用属性

      1、android:entries=""    //指定spinner要显示的字符串资源。必须是在strings资源文件中定义的字符串资源。

      2、android:spinnerMode="dialog" //spinner的模式,枚举值有两个值dialog和dropdown,默认就是dropdown

      3、android:prompt="@string/ "  //当spinnerMode的值是dialog时,弹出的对话框式的下列列表的提示。如果spinnerMode的值是dropdown时没有效果。注意:此处的值不能直接使用直接字符串,必须使用引用(字符串资源)

      4.android:popupBackground="#00A2E8" 设置下拉菜单列表的背景

      5.android:dropDownWidth="100dp" 设置下拉菜单列表的宽度

      这两个属性只有spinnerMode的值是dropdown时有效果

    2. 注意:字符串数组资源设置方法:在的字符串资源文件的resources标签下添加string-array子标签

    3.     <string-array name="planets_array">

              <item>Mercury</item>

              <item>Venus</item>

              <item>Earth</item>

              <item>Mars</item>

              <item>Jupiter</item>

              <item>Saturn</item>

              <item>Uranus</item>

              <item>Neptune</item>

          </string-array>

    1. 常用方法

Spinner是一种适配器视图,让spinner显示数据不仅仅可以通过属性的方式,也通过代码的方式添加数据。

一种方式:

二种方式:种方式只能绑定指定的资源文件

spinner.setOnItemSelectedListener(OnItemSelectedListener) //设置监听器,当有item被选中时的监听器。

第一种获取资源:获取字符串资源

//获取资源文件里的一组值

String[] values = this.getResources().getStringArray(R.array.city);

    1. ArrayAdapter创建方式

ArrayAdapter:数组类型适配器

作用:将指定的数据源显示到item选项布局中

默认情况下,这类要求提供一个资源ID来引用一个单独TextView,也就是说数据源的每一项必须放在布局文件中的TextView业显示,无论如何,这个TextView是要被引用的:

有几个常用的构造方法:

  1. 带四个参数的:比较常用的,也可以在每一项旁边加图片的

显示结果如下:

但是这种图片只能是固定的,想要不固定的图片,可以用自定义的适配器,后面讲

2.带两个参数的,不常用

3.带三个参数的,不常用

这种三个参数的,布局文件里的根标签必须是TextView

1、ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,

        R.array.planets_array, android.R.layout.simple_spinner_item);//通过ArrayAdapter的静态方法可以创建ArrayAdapter对象。该ArrayAdapter的原始数据来自于资源文件中的字符串数组资源。 参数二:字符串数组资源   参数三:当某个选项被选中之后在Spinner框中显示的布局文件(注意该布局文件只能有一个TextView标签,不能有其他任何标签)

 

2、更多的时候,是使用ArrayAdapter的相应构造方法来创建ArrayAdapter对象。

关于ArrayAdapter构造方法的说明:

  1. ArrayAdapter(context, resource, objects) 

 参数一:上下文对象

 参数二:布局文件的id,注意该布局文件有且只能有一个TextView标签  

参数三:原始数据,List集合或数组都可以。

  1. ArrayAdapter(context, resource, textViewResourceId, objects)  

参数一:上下文对象   

参数二:布局文件的id,注意该布局文件中至少有一个TextView标签  

参数三:参数二布局文件中要显示数据的TextView的id  

参数四:原始数据,List集合或数组都可以。

查看源码:ArrayAdapter继承了BaseAdapter,做为任何一个适配器,都要有两个必走的方法,一个叫getCount(),这个方法返回的是集合的长度或者是数组的长度,传进来的如果是数组,就先把数组转成集合,还有一个getView的方法,这个方法是返回每个条目的view对象,它调用的是createViewFromResource方法,这个方法里定义了一个TextView,然后通过View对象的findViewById来找到对应的TextView对象,这个ID就是我们在构造方法里传入的TextView的ID,然后在去获取集合里指定位置所对应的条目,然后判断这个条目,如果这个条目就是一个普通的纯文本,那就直接去设置TextView里的内容了,如果发现它不是纯文本,就调用条目的toString()方法,然后再设置TextView里的内容

  • SimpleAdapter

使用ArrayAdapter适配器时,只能使用一种数据来源,功能单一有限。使用SimpleAdapter可以避免ArrayAdapter的不足,每个选项数据配置不同的数据。

定义: 简单数组适配器类,必须自定义选项item布局,它只有一个构造方法

参数一:上下文对象

参数二:每个选项需要显示的多个数据的组成的list集合。每个选项需要显示的数据用Map集合来管理。

参数三:layout文件的id

参数四:Map集合中key组成的数组,

参数五:布局文件中的需要设置数据的控件的id组成的数组。注意要与参数四对应起来。

来看上个图的案例:

这个我们用ArrayAdapter实现的,但是图片都是一样的,现在我想实现图片不一样:就可以采用SimpleAdapter来实现

  1. 新建一个布局文件:

  1. 代码中通过SimpleAdater把数据源与布局文件绑定

 

 

  • AutoCompleteTextView

AutoCompleteTextView继承自EditText,相比EditText该控件多了当在输入框中输入字符的时候,会根据预设的数据进行提示。

    1. 常用属性和方法
  1. android:completionThreshold="数字"  //当输入几个字符后开始提示
  2. android:completionHint="请选择你的姓名" //根据你的输入弹出数据让你选择的时候的提示语。
  3. textCursorDrawable="@null" 设置光标颜色与文本颜色一致
  4. dropDownWidth 下拉菜单的宽度
  5. AutoCompleteTextView.setAdapter(adapter);//设置适配器,一般为ArrayAdapter足够。

自定义资源文件:

 

在ACTIVITY里添加一个AutoCompleteTextView

 

 

通过适配器绑定要提示的资源

 

 

 

TextWatcher可以监视文本输入框是的变化,该接口的回调方法可以在文本各种变化时调用适当的方法。

  • MultiAutoCompleteTextView

MultiAutoCompleteTextView是多选选项
使用MultiAutoCompleteTextView必须实现MultiAutoCompleteTextView.Tokenizer接口,用于声明用于选项与选项之间分隔的符号,一般如不特殊指定,可以使用Android为我们提供的实现类MultiAutoCompleteTextView.CommaTokenizer,它设定使用英文逗号","进行分隔选项

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值