一、Spinner(下拉列表)

1、常用属性

android:entries=""//指定spinner要显示的字符串资源,必须是在strings或者attrs资源文件中定义的字符串资源android:spinnerMode="dialog" //spinner的模式,枚举值有两个值dialog和dropdown,默认就是dropdownandroid:prompt="@string/ "//当spinnerMode的值是dialog时有效,弹出的对话框式的下列列表的提示(类似标题)//此处的值不能直接使用直接字符串,必须使用引用(字符串资源)android:popupBackground="#00A2E8"//设置下拉菜单列表的背景android:dropDownWidth="100dp"//设置下拉菜单列表的宽度//最后两个属性在spinnerMode为dropdown时候有效

spinnerMode为dropdown和dialog时的效果:

2、结合适配器ArrayAdapter/SimpleAdapter使用

ArrayAdapter:数组类型适配器
作用:将指定的数据源显示到item选项布局中

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

ArrayAdapter提供了三个构造方法:

  • 带四个参数的构造方法(常用)
    ArrayAdapter(context, resource, textViewResourceId, objects)
    参数一:上下文对象
    参数二:绑定的布局文件(自定义或者系统提供)
    参数三:布局文件中对应的TextView的id
    参数四:数据源,List集合或数组都可以。

  • 带三个参数的构造方法(不常用)
    ArrayAdapter(context, resource, textViewResourceId, objects)
    参数一:上下文对象
    参数二:布局文件的id,该布局文件中只能有一个TextView标签
    参数三:参数二布局文件中要显示数据的TextView的id
    参数四:原始数据,List集合或数组都可以。

  • 带两个参数的构造方法(不常用)
    ArrayAdapter(context, resource)
    参数一:上下文对象
    参数二:布局文件(一定要有一个TextView)

sp = (Spinner) findViewById(R.id.sp3);        sp4 = (Spinner) findViewById(R.id.sp33);        //ArrayAdapter        String[] city = { "深圳", "上海", "北京", "广州" };//       ArrayAdapter cityArr = new ArrayAdapter(this,//       R.layout.spinner);//       ArrayAdapter cityArr = new ArrayAdapter(this,//       android.R.layout.simple_spinner_dropdown_item);        // cityArr.addAll(city);//       ArrayAdapter cityArr = new ArrayAdapter(this,//       R.layout.spinner, city);        ArrayAdapter<String> cityArr = new ArrayAdapter<String>                (this, //上下文对象                R.layout.spinner2,//布局文件                R.id.tvspinner2,//布局文件对应的控件id                city//数据源                ) {};        sp.setAdapter(cityArr);        // simpleadapter        data = new ArrayListString, Object>>();        Map<String, Object> map1 = new HashMap<String, Object>();        map1.put("value", "深圳");        map1.put("icon", R.drawable.pic1);        data.add(map1);        Map<String, Object> map2 = new HashMap<String, Object>();        map2.put("value", "北京");        map2.put("icon", R.drawable.pic2);        data.add(map2);        Map<String, Object> map3 = new HashMap<String, Object>();        map3.put("value", "上海");        map3.put("icon", R.drawable.pic3);        data.add(map3);        Map<String, Object> map4 = new HashMap<String, Object>();        map4.put("value", "广州");        map4.put("icon", R.drawable.pic4);        data.add(map4);        Map<String, Object> map5 = new HashMap<String, Object>();        map5.put("value", "杭州");        map5.put("icon", R.drawable.pic5);        data.add(map5);        Map<String, Object> map6 = new HashMap<String, Object>();        map6.put("value", "福州");        map6.put("icon", R.drawable.pic6);        data.add(map6);        sl = new SimpleAdapter(this,//上下文对象                data,//数据源                R.layout.spinner3,//布局文件                new String[] { "icon", "value" },//绑定的值                 new int[] { R.id.ivicon3,R.id.tvspinner3 //布局文件对应的控件id                });        sp4.setAdapter(sl);

ArrayAdapter和SimpleAdapter的区别是 ArrayAdapter 只能传入一种数据类型,SimpleAdapter可以传入一组不同类型的数据。

//TODO 查看ArrayAdapter和SimpleAdapter源码

二、AutoCompleteTextView/MultiAutoCompleteTextView

MultiAutoCompleteTextView继承自AutoCompleteTextView
AutoCompleteTextView继承自EditText

1、常用属性:

android:completionThreshold="数字"  //当输入几个字符后开始提示android:completionHint="请选择你的姓名" //根据你的输入弹出数据让你选择的时候的提示语。textCursorDrawable="@null" //设置光标颜色与文本颜色一致dropDownWidth //下拉菜单的宽度

2、使用方法

String[] str = { "shenzheng", "beijing", "shanghai", "guangzhou","fujian", "hangzhou", "nanjing", "hubei" };        AutoCompleteTextView act = (AutoCompleteTextView) findViewById(R.id.act1);        MultiAutoCompleteTextView act2 = (MultiAutoCompleteTextView) findViewById(R.id.act2);         '//使用MultiAutoCompleteTextView必须实现MultiAutoCompleteTextView.Tokenizer接口,         //可以使用Android提供的实现类MultiAutoCompleteTextView.CommaTokenizer,        //用于声明用于选项与选项之间分隔的符号,一般如不特殊指定,设定使用英文逗号","进行分隔选项        act2.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());        //适配器绑定数据源        ArrayAdapter ap = new ArrayAdapter(this,android.R.layout.simple_dropdown_item_1line, str);        //添加适配器到要监听的控件        act.setAdapter(ap);        act2.setAdapter(ap);        //监听内容更改.        act.addTextChangedListener(new TextWatcher() {            @Override            public void onTextChanged(CharSequence s, int start, int before, int count) {                Log.i("listener", "改变中s="+s+",start="+start+",before="+before+",count="+count);            }            @Override            public void beforeTextChanged(CharSequence s, int start, int count,                    int after) {                Log.i("listener", "改变前s="+s+",start="+start+",count"+count);            }            @Override            public void afterTextChanged(Editable s) {                Log.i("listener", "改变后s="+s);            }        });

更多相关文章

  1. [Traceview]android性能测试
  2. AndroidManifest.xml配置文件详解
  3. Java乔晓松-android中上传图片到服务器Tomcat(Struts2)
  4. Android(安卓)apk反编译
  5. Android之创建程序快捷方式
  6. mybatisplus的坑 insert标签insert into select无参数问题的解决
  7. NPM 和webpack 的基础使用
  8. Python技巧匿名函数、回调函数和高阶函数
  9. 【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程

随机推荐

  1. Android碎片化问题 java.lang.NoClassDef
  2. Android ContentProvider(内容提供者)的
  3. Android面试题总结(一)
  4. android studio 怎么取消默认AppcompatAc
  5. android SDK 快速更新配置
  6. 再说Android中实现全屏的方法
  7. Android(安卓)OpenGL ES 开发教程 从入门
  8. (Android)用Socket的小例子
  9. Android Recovery的汉化 显示中文
  10. Android Service用法讲解与实例