ListView
来源:互联网 发布:火石软件招聘 编辑:程序博客网 时间:2024/05/16 14:43
ListView
- ListView继承AdapterView
- Adapter
- AarrayAdapter
- SimpleAdapter
- BaseAdapter
- SimpleCursorAdapter
- PageAdapter
- BaseExpandableListAdapter
- Data
- Collection 建议用集合
- AdapterView显示的过程就是凑齐三要素的过程!
ListView的属性
- android:entries:直接填充values-string文件夹中string-array数据,使用它填充数据,使数据固定化了,不容易动态操作!- android:divider:分割线的背景(颜色、图片)- android:dividerHeight:分割线的高度- android:footerDividersEnabled- android:headerDividersEnabled
ListView配合三要素显示!并且添加头视图、足视图、空视图
- 添加头视图:addHeaderView(View view)
- 一般直接展示本ListView中最为重要的内容
- 添加足视图:addFooterView(View view)
- 一般用于广告展示
- 设置空视图:setEmptyView(View view)
- 作用:
- 当ListView数据为空的时候!会显示空视图的内容!
- 当使用了空视图,并且ListView没有数据,那么头视图和足视图也不会显示!
- 作用:
- 注意:尽量把以上三个操作放在setAdapter之前
- View的来源
- Java代码中创建
ImageView iv = new ImageView(Context)
iv.setLayoutParams(new LayoutParams(参数1,参数2))- 注意:设置宽和高
- 设置LayoutParams导包时候如何导
- new LayoutParams(参数1,参数2)
- 参数1:宽
- 参数2:高
- 宽高可以直接设置值,单位为px
- 此设置属性的控件将要添加控件的类型
- ImageView—>ListView导入AbsListView包的LayoutParams
- ImageView—>LinearLayout导入ViewGroup包的LayoutParams
- Layout转成View
- LayoutInflate.from(Context).inflate(参数1,参数2)
- 参数1:要转化的布局
- 参数2:父布局的来源
- Java代码中创建
ListView结合SimpleAdapter使用
- SimpleAdapter一般用于图文混排并且数据是来源于本地!
- SimpleAdapter adapter = new SimpleAdapter(参数1,参数2,参数3,参数4,参数5)
- 参数1:Context
- 参数2:数据源,
List<Map<String,Object>>
- 参数3:单挑布局文件
- 参数4:from,map的key,new String[]{}
- 参数5:to,map的key对应的value,对应单挑布局的控件的id,new int[]{}
- 问题:SimpleAdapter能加载网络图片么?
- 使用ViewBinder在外部修改单条控件显示的内容!
- 使用:
setViewBinder(new ViewBinder() {
// 第一个参数:单条布局内的控件
// 第二个参数:单条控件对应的数据
// 第三个参数:安全数据!它本身和参数2相同!但是永远不为空!
// 返回值:true,自己添加数据,SimpleAdapter不会处理控件
false,正常执行!SimpleAdapter会对控件赋值!
@Override
public boolean setViewValue(View view, Object data,
String textRepresentation) {
return boolean;
}
- 注意:
- ViewBinder能使用的范围:它只能使用在SimpleAdapter、SimpleCursorAdapter
- ViewBinder如果自行修改了显示内容!AdapterView本身的单条点击事件取值会受到影响!
ListView结合BaseAdapter
- ListView优化
- 实现完全自定义Adapter
- 优势:能实现完全自定义
- 缺点:实现起来有点复杂
- 教学目标:完全熟练!!!
- BaseAdapter的使用
- 创建一个类去继承BaseAdapter
- 添加未实现的方法
- getCount():返回显示的总条目,由数据决定,如果此处返回值是0,那么其他方法不会执行,此方法需要进行非空判断
- getItem():返回单条数据,建议把返回值类型改为List的泛型
- getItemId():返回ListView单条视图的Id
- getView():此方法是BaseAdapter最为重要的一个方法!此方法多次调用!但是每次调用的position都不相同!开发者需要在此方法中,返回装好数据的视图!必须要考虑优化问题!
- 注意事项:
- getCount()需要添加非空判断,注意写法
- getView()方法需要return ConvertView
- getView()方法中convertView不要忘记setTag();
- ListView优化写法
- ListView宽高写成定值(包括充满父布局),防止多次调用加载
- ListView自身优化!ListView默认只会加载一屏的数据!
- 利用Android回收机制,服用ConvertView!
- 定义ViewHolder类,防止重复查找控件!convertView.setTag()、convertView.getTag()
面试问题
- ListView第几次加载Item的时候,ConvertView不会为空!
- 第二次加载Item的时候,不会为空!
0 0
- listview
- listview
- listview
- ListView
- ListView
- listview
- listview
- listView
- ListView
- ListView
- ListView
- listview
- LIstView
- ListView
- listview
- ListView
- ListView
- ListView
- Android数据存储
- 【NOIP2017提高组模拟12.10】幻魔皇
- ContentProvider
- Intent
- 将eclipse中的Android项目导入到Android Studio
- ListView
- Unity 实现Android不锁屏
- ListView优化
- 我的C语言
- Loader加载器
- python模块学习---urllib,urlparse(3.0以后有改动)
- 学期总结
- markdown 语法之字体、字号、颜色以及背景色(转载)
- Menu菜单