高级控件
ListView
需要包:android.weight.ListView
以列表显示数据源
entries:数据源divids:列表项颜色
布局模式
通过setChoiceMode()进行设置。
- ListView_CHOICE_MODE_NONE
- ListView_CHOICE_MODE_SINGLE
- ListView_CHOICE_MODE_MULTIPLE
通过资源进行数据绑定
通过数据绑定,以实现用一个组件绑定多组信息,需要使用Adapter绑定。
-
定义数组资源
在
res/valus/array.xml中创建数组资源: -
在布局中绑定数据源
使用Adaptor进行数据绑定
-
创建数据源数组
允许适应常量字符串数组或从资源文件
array.xml中获取数据创建信息 -
创建
ArrayAdaptor对象 -
选择布局模式
-
适配器绑定到控件上
多行文本列表
-
创建数据源集合和数据源列表,分别存储单个列表项和多个列表项总和
key为string,Value自定。map中的每个元素代表该列表项中的一行,多个map中保持格式一致性,即键值对数量相同、键名相同。
-
创建SampleAdaptor对象
-
绑定适配器
自定义样式
- 创建自定义样式
- 创建数据源集合和列表,同多行文本列表
- 创建SampleAdaptor对象
事件处理
通过AdapterView.OnItemClickListener接口实现堆特定选项的监听。
方法:
parent:绑定Adapter的View组件view:选中项position:选中项的数据在数据数组中的索引id:选中项在项列表中的索引,通常和position相同
Grid View
需要包:android.weidget.GirdView
以二维可滚动网格展示。
columnWidth:列宽horizontalSpacing:列与列之间的水平间距verticalSpacing:行与行之间的 垂直间距numColumns:列数,可设置为整数或auto_fit(默认2列,若设置了列宽则为屏幕宽度/列宽StretchMode:设置拉伸模式none:不拉伸spacingWidth:拉伸列间的间距columnWidth:拉伸列自身spacingWidthUniform:均匀地扩展列和列之间的空间
绑定资源、设置适配器、自定义样式和事件监听与ListView相同。
Recycler View
需要自行创建自定义Adapter和LayoutManager两个类。
使用前需要在build.gradle(app)的dependencies闭包中添加:
自定义适配器类
继承RecyclerView.Adaper,必须定义一个继承于RecycleView.ViewHolder的内部类和重写三个方法:
- 构造函数,初始化数据源集合
onCreateViewHolder:根据子项杨式布局文件创建自定义ViewHolder类实例onBindViewHolder:每个子项被滚动到屏幕中时,把数据源中第x号的元素各组键值放进子项各个子控件中getItemCount:返回子项数量- 继承
RecyclerViewView.ViewHolder的自定义类
RecyclerView对象
支持三种内置布局:
LinearLayoutManager:线性布局的滑动列表GridLayoutManager:网格布局StaggeredGridLayoutManager:流式布局
事件处理
RecyclerView没有提供内置监听器,需监听其选项或选项的子控件,按以下两步实现:
- 在自定义适配器类的内部类的构造函数获取事件源控件
- 在onBindViewHolder方法中为事件源注册监听器对象,定义和重写匿名监听器类