一. 适配器
开发中大量使用BaseAdapter作为适配器
二. 表头、表尾以及分割线
footerDividersEnabled:是否在表尾设置一条分割线,默认为true
heaerDividersEnabled:是否在表头设置一条分割线,默认为true
divider:设置分割条,可用用颜色分割,也可以用图片分割
dividerHeight:设置分割条宽度
stackFromBottom:列表从底部开始显示
scrollBar:滑动条是否隐藏
cashColorHint:ListView设置背景拖动时,item背景变黑。此时可用将该值设为#00000000解决
三. java代码加入表头尾
addHeaderView(View v)
addFooterView(View v)
addHeaderView(v, null, false) 设置header能否被选中
addFooterView(v, null, false) 设置footer能否被选中
这些方法必须在setAdapter之前执行
四. BaseAdapter优化
(1) 复用convertView
(2) ViewHolder
(3) 当多个地方使用这个ViewHolder时,可将其设为static, 这样类只需加载一次
五. ListView的焦点冲突问题
当item中有checkbox, eidttext等控件时会发生焦点冲突,这些控件会抢占item的焦点。导致item无法点击
解决方法:
① 方法一:将抢占焦点的控件的focusable设置为false
② 方法二:在item根节点设置descendantFocusability = blocksDescendants 表示ViewGroup会覆盖字控件直接获得焦点
还有两个属性beforeDescendant表示viewgroup会优先子类获得焦点;afterDescendant表示子控件不需要焦点时获得焦点
六. ListView的item中有checkbox时的错误问题
当checkbox的数量足以滚出屏幕时,由于convertView的原因,会出现isChecked错位
解决方法:可用使用HashMap<Integer, boolean>存储ischecked状态
七. List的数据为空时
(1) 可用关联一个布局,然后调用setEmptyView(View)
(2) 动态创建布局
- TextView emptyView = new TextView(context);
- emptyView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
- emptyView.setText(“This appears when the list is empty”);
- emptyView.setGravity(Gravity.CENTER);
- emptyView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 16);
- emptyView.setVisibility(View.GONE);
- ((ViewGroup)listView.getParent()).addView(emptyView);
- listView.setEmptyView(emptyView);
(3) 不能直接这样创建
- TextView emptyView = new TextView(context);
- emptyView.setText(“This appears when the list is empty”);
- listView.setEmptyView(emptyView);
八. ListView的重绘
notifyDataSetChange():当某个item改变时,会重绘ListView,但是没有改变的item是不会重绘的
九. ListView的多布局
(1) getItemViewType() 该item对应view的那个type
(2) getViewTypeCount() 多布局的数量,从0开始
(3) ViewHolder与Item绑定时由于类是静态的只加载一次,所以需要用id区分不同布局的id
convertView.setTag(R.id.Type1,holder1);
holder1 = (ViewHolder1) convertView.getTag(R.id.Type1);这个id必须是recouce下的唯一id.可用在values下定义一个ids文件,生成唯一id
<item name="Type1" type="id"></item> <item name="Type2" type="id"></item>