UI高级控件
主要知识点 1.常见AdapterView控件 2.什么是适配器 3.常见适配器组件 4. Spinner 重点 3.常见适配器组件 重点 4. Spinner 重点 5. AutoCompleteTextView
AdapterView控件 AdapterView 常见的AdapterView控件 适配器视图控件,本质就是一系列列表类UI组件,其内容通常是一个包含多项相同格式资源的列表,每次只显示其中的一项 常见的AdapterView控件 Spinner、Gallery、GridView、ListView
AdapterView控件 AdapterView 常见的AdapterView控件 适配器试图控件,本质就是一系列列表类UI组件,其内容通常是一个包含多项相同格式资源的列表,每次只显示其中的一项 常见的AdapterView控件 Spinner、Gallery、GridView、ListView
AdapterView控件 ViewGroup AdapterView AbsListView AbsSpinner GridView Gallery Spinner
Spinner-下拉框 Spinner 下拉列表 点击“北京”旁边的三角,显示下拉框,出现多个城市
Spinner 常用属性 属性 说明 android:id 控件id android:layout_width 控件宽度 android:layout_height 控件高度 android:entries 关联一个字符串数组 android:spinnerMode dialog:对话框形式 dropdown:下拉框形式
什么是适配器 适配器是从数据源到UI组件的中介.负责把数据源填充到UI组件中,以便显示给用户
适配器结构图
适配器 BaseAdapter是一个抽象类,继承它需要实现较多的方法,所以也就具有较高的灵活性。 ArrayAdapter支持泛型操作,最为简单,只能展示一行字。 SimpleAdapter有最好的扩充性,可以自定义出各种效果。
AdapterView与Adapter的关系 采用MVC模式将前端显示V和后端数据M分离
案例演示1 使用代码控制ArrayAdapter填充Spinner mySpinner=(Spinner) findViewById(R.id.mySpinner); String[] arr = { "黑客帝国", "终结者", "异形", "变形金刚" }; ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_dropdown_item,arr); mySpinner.setAdapter(adapter); mySpinner.setSelection(0, true); //设置默认选项 mySpinner.setPrompt(“请选择”); //对话框方式打开,显示提示文字
如何获取选择项内容 设置setOnItemSelectedListener监听 mySpinner.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { // TODO Auto-generated method stub String string=parent.getItemAtPosition(position).toString(); Toast.makeText(MainActivity.this, “你选择的是 "+string,Toast.LENGTH_SHORT).show(); } public void onNothingSelected(AdapterView<?> parent) { });
案例演示2 使用SimpleAdapter实现如下功能
案例演示2 spinner=(Spinner) findViewById(R.id.spinner1); List<HashMap<String, Object>> datalist=new ArrayList<HashMap<String,Object>>(); //大笑 HashMap<String, Object> map=new HashMap<String, Object>(); map.put("image", R.drawable.daxiao); map.put("name", "大笑"); datalist.add(map); //微笑 map=new HashMap<String, Object>(); map.put("image", R.drawable.weixiao); map.put("name", "微笑"); SimpleAdapter simpleAdapter=new SimpleAdapter( this, datalist, R.layout.spinner_item, new String[]{"name","image"}, new int[]{R.id.con,R.id.img}); spinner.setAdapter(simpleAdapter);
演示案例3-实现spinner级联 实现入下图效果
AutoCompleteTextView 自动完成文本显示,该控件继承EditText控件
AutoCompleteTextView 常用属性 属性 说明 android:completionHint 设置出现在下拉菜单中的提示标题 android:completionThreshold 设置用户至少输入多少个字符才会显示提示 android:dropDownHorizontalOffset 设置下拉菜单于文本框之间的水平偏移 android:dropDownVerticalOffset 设置下拉菜单于文本框之间的垂直偏移。下拉菜单默认紧跟文本框 android:dropDownHeight 设置下拉菜单的高度 android:dropDownWidth 设置下拉菜单的宽度
案例演示 实现如下效果
添加内容变化监听 为了控制自动完成文本控件的内容变化,需要为此控件添加addTextChangedListener监听
addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { // TODO Auto-generated method stub Log.i("auto_onTextChanged", "s="+s+" start="+start+" before="+before+" count="+count); } public void beforeTextChanged(CharSequence s, int start, int count, int after) { Log.i("auto_beforeTextChanged", "s="+s+" start="+start+" count="+count+" after="+after); //Toast.makeText(Auto_Com_Activity.this, "s="+s+" start="+start+" count="+count+" after="+after, 0).show(); public void afterTextChanged(Editable s) { Log.i("auto_afterTextChanged", "s="+s); });
总结 常见AdapterView控件 适配器 AutoCompleteTextView自动完成内容 Spinner Gallery ListView GridView 适配器 BaseAdapter ArrayAdapter SimpleAdapter AutoCompleteTextView自动完成内容
Thanks!