巩固BaseAdapter(2017年12月12日)

2017.12.12

1、巩固BaseAdapter

【案例】使用listview显示联系人列表。

对于数据操作,不再让每一个集合元素使用HashMap,而是直接使用实体类。

 

 

 

activity_main.xml

 

 

 

item.xml

 

 

 

styles.xml

 

 

 

Person.java

 

 

 

MyBaseAdapter.java

 

 

 

 

MainActivity.java

 

 

 

效果:

 

 

 

 

2ListViewBaseAdapter显示的性能问题

当加载很多item时,ListView会明显变慢。如何提高ListView的性能?

每个item实际上都是单独的控件。而这些控件都是根据显示情况,临时生成的。

由于每次都要从view中创建控件,这个过程非常耗用资源。能否将这些item中的控件缓存起来。

如何缓存这些item中的控件?

定义一个实体类,根据控件个数来定义这个实体类。(ViewHolder

【案例】扩大上例数据显示数。观察性能问题。

MainActivity.java---修改

 

 

 

MyBaseAdapter.java

 

 

 

日志:

无论怎么滚动Listview,只会看到7条日志。而之前是有多少数据,就显示多少条日志。性能大大提升。

 

 

 

 

3、为Listview添加事件

对于用户点击item时,有响应。该事件是——onItemClick(针对Listview来说,属于listview的事件,不是属于单个item

【案例】点击item响应

MainActivity.java中追加

 

 

 

效果:

 

 

 

 

4GridView(网格视图)

ListView(列表视图)是纵向显示数据

GridView是横向显示数据,如果一行显示不下,就会换行。

都需要使用数据适配器,仅仅是外观不一样。

GridView有哪些属性:

ColumnWidth:表示一列的宽度

numColumn:表示一行显示几列

horizontalSpacing:水平方向间距

verticalSpacing:垂直方向间距

gravity:内部元素对齐方式

stretchMode:拉伸方式(不拉伸NO_STRETCH,拉伸间距STRETCH_SPACING,元素和间距一起拉伸STRETCH_SPACING_UNIFORM,元素本身STRETCH_COLUMN_WIDTH

【案例】显示的每个单元格,上图下字。

项目结构:

 

 

 

activity_main.xml

 

 

 

item.xml

 

 

 

MyBaseAdapter.java

 

 

 

 

 

 

MainActivity.java

 

 

 

效果:

 

 

 

 

【作业】

1、P177页,图6-7

2、修改之前作业“选择地址”,地址列表使用ListView,当用户选择后,显示选中的地址。

选做:

第2题中,地址信息编辑功能选做。

 

posted @ 2021-03-25 14:06  三生石头花  阅读(24)  评论(0编辑  收藏  举报