Android基础之AdapterView系列学习
2016-01-24 21:44
316 查看
AdapterView介绍
AdapterView是ListView的间接父类。定义了一个可以通过适配器加载和显示多个列表项的容器控件。其两个主要子类是:AbsListView和
AbsSpinner,二者最大的区别在于核心响应事件不同。
·AdapterView是ViewGroup的子类
·可包含多个列表项用于显示一组数据
·AdapterView类中啊addView方法被禁用,其数据提供通过适配器对象来完成
·两个直接子类的区别在于核心事件不同
GridView控件:
·GridView与ListView一样都是容器控件
·继承自AbsListView
·用网格的形式显示列表项
Spinner
Spinner是AbsSpinner的子类,通常称为下拉列表。其界面主要由两部分构成:内容显示区和下拉提示列表。其核心事件是列表项选中事件。
被选中的列表项会在显示区显示。
示例:
效果图:
AutoCompleteTextView
AutoCompleteTextView是EditText的直接子类,该类继承了EditText的所有行为和属性,同时该类的内部组合了一个AdapterView对象,通过
该对象可以实现对输入框内输入的文本的过滤显示。
·继承自EditText
·其内部包含一个AdapterView对象,可以通过该控件的setAdapter方法,为AdapterView对象提供过滤数据
·setAdapter方法中接受的适配器必须实现Filterable借口
·主要方法:
- void setThreshold(int threshold) //指定输入几个字符之后才开始过滤匹配
- void setCompletionHint(CharSequence hint) //列表最后显示的信息
示例:
效果图
MultiAutoCompleteTextView
MultiAutoCompleteTextView继承自AutoCompleteTextView,与其父类最重要的区别在于MultiAutoCompleteTextView控件允许用户进行多次输入补全。该控件使用时必须设置分词符。该类内部包含了一个默认的逗号分词符。
示例:
效果图
AdapterView是ListView的间接父类。定义了一个可以通过适配器加载和显示多个列表项的容器控件。其两个主要子类是:AbsListView和
AbsSpinner,二者最大的区别在于核心响应事件不同。
·AdapterView是ViewGroup的子类
·可包含多个列表项用于显示一组数据
·AdapterView类中啊addView方法被禁用,其数据提供通过适配器对象来完成
·两个直接子类的区别在于核心事件不同
AbsListView:显项被单击时不会有特殊显示 GridView 网格形式显示列表项 ListView 垂直线性布局显示 AbsSpinner:列表项中的选中事件一旦被选中,列表项会被特殊显示 Gallery 4.0之后不建议使用 Spinner
GridView控件:
·GridView与ListView一样都是容器控件
·继承自AbsListView
·用网格的形式显示列表项
主要属性 Java方法 作用 ColumnWidth setCoumnWidth(int i) 设置列表宽度 Gravity setGravity(int i) 设置对齐方式 horizontalSpacing setHorizontalSpacing 设置各元素之间的水平问题 numColumns setNumColumns(int i) 设置列数 stretchMode setStretchMode(int i) 设置拉伸模式 NO_STRETCH 不拉伸 STRETCH_SPACING 仅拉伸元素之间的间距 STRETCH_SPACING_UNIFORM 表格元素本身,元素之间的间距一起拉伸 STRETCH_COLLUMN_WIDTH 仅拉伸表格元素本身
Spinner
Spinner是AbsSpinner的子类,通常称为下拉列表。其界面主要由两部分构成:内容显示区和下拉提示列表。其核心事件是列表项选中事件。
被选中的列表项会在显示区显示。
示例:
效果图:
package com.example.spinner; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.widget.ArrayAdapter; import android.widget.Spinner; public class MainActivity extends Activity { private String[] number ={ "一","二","三","四","五","六","七","八","九" }; private Spinner spinner; private ArrayAdapter<String> adapter; private void setupView(){ spinner = (Spinner) findViewById(R.id.spinner); adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, number); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(adapter); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); setupView(); } }
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" > <Spinner android:id="@+id/spinner" android:layout_width="match_parent" android:layout_height="wrap_content"/> </LinearLayout>
AutoCompleteTextView
AutoCompleteTextView是EditText的直接子类,该类继承了EditText的所有行为和属性,同时该类的内部组合了一个AdapterView对象,通过
该对象可以实现对输入框内输入的文本的过滤显示。
·继承自EditText
·其内部包含一个AdapterView对象,可以通过该控件的setAdapter方法,为AdapterView对象提供过滤数据
·setAdapter方法中接受的适配器必须实现Filterable借口
·主要方法:
- void setThreshold(int threshold) //指定输入几个字符之后才开始过滤匹配
- void setCompletionHint(CharSequence hint) //列表最后显示的信息
示例:
效果图
package com.example.autocompletetextview; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.widget.ArrayAdapter; import android.widget.AutoCompleteTextView; public class MainActivity extends Activity { private AutoCompleteTextView auto; private ArrayAdapter<String> adapter; private String[] str={ "able","ajk","ajkgf","ahisd","ksdfa","ksadfg","kwerw","kvbsb","msadf","msadg" }; private void setupView(){ auto = (AutoCompleteTextView) findViewById(R.id.auto); auto.setThreshold(1); auto.setCompletionHint("搜索结果..."); adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, str); auto.setAdapter(adapter); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); setupView(); } }
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <AutoCompleteTextView android:id="@+id/auto" android:layout_width="match_parent" android:layout_height="wrap_content"/> </RelativeLayout>
MultiAutoCompleteTextView
MultiAutoCompleteTextView继承自AutoCompleteTextView,与其父类最重要的区别在于MultiAutoCompleteTextView控件允许用户进行多次输入补全。该控件使用时必须设置分词符。该类内部包含了一个默认的逗号分词符。
·继承自AutoCompleteTextView ·充许进行多次提示 ·多次输入项使用指定的分词符间隔 ·主要方法: - void setTokenizer(Tokenizer t) ·MultiAutoConpleteTextView类中包含一个Tokenizer接口的实现类CommaTokenizer
示例:
效果图
package com.example.multiautocompletetextview; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.widget.ArrayAdapter; import android.widget.MultiAutoCompleteTextView; public class MainActivity extends Activity { private String[] str={ "able","ajk","ajkgf","ahisd","ksdfa","ksadfg","kwerw","kvbsb","msadf","msadg" }; private MultiAutoCompleteTextView multi; private ArrayAdapter<String> adapter; private void setupView(){ multi = (MultiAutoCompleteTextView) findViewById(R.id.multi); adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, str); multi.setAdapter(adapter); multi.setThreshold(1); multi.setCompletionHint("历史搜索结果.."); multi.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer()); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); setupView(); } }
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <MultiAutoCompleteTextView android:id="@+id/multi" android:layout_width="match_parent" android:layout_height="wrap_content"/> </RelativeLayout>
相关文章推荐
- android_重写button样式
- Android内容提供者(Content provider)
- android View的相关知识点
- android149 360 程序锁输入密码
- android147 360 程序锁fragment
- Android Fragment的使用(1)
- Android初学者 小小笔记
- android两个fragment的使用localBroadcastManager来传递参数
- android开发代码之隐藏软键盘
- 强烈推荐android studio用的几个插件
- Android Studio开发JNI工程
- 学习笔记--Android 属性动画
- 【Android】 Sqlite3 not found
- 开发者日志(2016年01月24日20:41:45):关于android AsyncTask学习
- 【Android】Sqlite3命令详解
- androidStudio 配置
- 向Android操作栏中添加操作项和浮动菜单项
- Android实战(六)------Android添加按钮事件的几种方法和实例
- Android实战(六)------Android添加按钮事件的几种方法和实例
- Android教程-fragment的问题系列