高级控件Spinner

本文详细介绍了Spinner控件的概念、属性及监听方式,并深入探讨了Adapter的作用及其子类BaseAdapter、ArrayAdapter与SimpleAdapter的使用场景。同时,文章还涵盖了AutoCompleteTextView的特性及addTextChangedListener的实现方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spinner
 >概念;下拉菜单控件 默认显示当前选择的项(第一次展示集合中第一条数据)
 >属性:
 

 android:entries="@array/books"  展示数据  (note:提前知道数据是什么 )
      android:spinnerMode="dropdown" spinner 样式
      dropdown:下拉列表     设置popupBackground  每一项的背景颜色
      dialog:弹出框              设置prompt   标题      调用的是Values/string.xml/string  

     >监听:setOnItemSelectedListener
 



2,什么是Adapter?
 >适配器  将数据转换成控件识别的形式

 >子类:BaseAdapter   ArrayAdapter     SimpleAdapter
 
3,ArrayAdapter的使用?
 >一般用于只有String类型数据  展示到TextView上

 >如果三个参数的ArrayAdapter   item布局的根节点 必须是TextView
         如果跟节点不是TextVIew 三个参数的会报错      使用四个参数的ArrayAdapter
 
4,SimpleAdapter的使用:
 >处理复杂的数据   (带有图片和文字)

    Context context:   上下文
           List<? extends Map<String, ?>> data:  数据源
             int resource:  布局
             String[] from:  数据源中带key的数组
             int[] to     :  布局资源中id的数组
            
             note:from里的key和to里的控件id  是对应关系

5,AutoCompleteTextView
 >自动索引的EditText(文本输入框)

 > 默认输入俩个字符  才开始索引
          android:completionThreshold="1" 输入几个字符开始索引
  
6,addTextChangedListener()的用法?

 >
 
       
        //文本发生变化的监听   可以对EditText操作 
        autoView.addTextChangedListener(new TextWatcher() {
   
         /**
          * 改变文本时调用
          * CharSequence s:变化之后的文本
          * int start:变化的起点  从哪里开始改变
          * int before: 相比较文本变化  添加没有改变0     删除改变
          * int count:相比较文本变化     添加有值          删除没有改变0
          */
   @Override
   public void onTextChanged(CharSequence s, int start, int before, int count) {
    // TODO Auto-generated method stub
    Log.e("AAA", "==onTextChanged==s:"+s+"=start:"+start+"=before:"+before+"=count:"+count);
   }
   
   /**
          * 改变文本之前调用
          * CharSequence s:变化之前的文本
          * int start:变化之前的文本下标
          * int count:相比较文本的变化   添加不变的0   删除是改变:删除几个展示结果
          * int after:相比较文本的变化     如果添加是有值    如果删除不变   0
          */
   @Override
   public void beforeTextChanged(CharSequence s, int start, int count,
     int after) {
    // TODO Auto-generated method stub
    Log.e("AAA", "==beforeTextChanged==s:"+s+"=start:"+start+"=count:"+count+"=after:"+after);
    
   }
   /**
          * 改变文本之后调用
          * Editable s:改变之后的文本
          */
   @Override
   public void afterTextChanged(Editable s) {
    // TODO Auto-generated method stub
    Log.e("AAA", "==afterTextChanged==s:"+s);
   }
  });
 

 /**
         * 08-25 15:23:44.334: E/AAA(12812): ==beforeTextChanged==s:=start:0=count:0=after:1
   08-25 15:23:44.334: E/AAA(12812): ==onTextChanged==s:g=start:0=before:0=count:1
   08-25 15:23:44.334: E/AAA(12812): ==afterTextChanged==s:g
   08-25 15:23:45.904: E/AAA(12812): ==beforeTextChanged==s:g=start:1=count:0=after:1
   08-25 15:23:45.904: E/AAA(12812): ==onTextChanged==s:gh=start:1=before:0=count:1
   08-25 15:23:45.904: E/AAA(12812): ==afterTextChanged==s:gh
   08-25 15:23:47.824: E/AAA(12812): ==beforeTextChanged==s:gh=start:2=count:0=after:1
   08-25 15:23:47.824: E/AAA(12812): ==onTextChanged==s:ghj=start:2=before:0=count:1
   08-25 15:23:47.824: E/AAA(12812): ==afterTextChanged==s:ghj
   08-25 15:23:49.164: E/AAA(12812): ==beforeTextChanged==s:ghj=start:2=count:1=after:0
   08-25 15:23:49.164: E/AAA(12812): ==onTextChanged==s:gh=start:2=before:1=count:0
   08-25 15:23:49.164: E/AAA(12812): ==afterTextChanged==s:gh
   08-25 15:23:49.694: E/AAA(12812): ==beforeTextChanged==s:gh=start:1=count:1=after:0
   08-25 15:23:49.694: E/AAA(12812): ==onTextChanged==s:g=start:1=before:1=count:0
   08-25 15:23:49.694: E/AAA(12812): ==afterTextChanged==s:g

         */

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值