使用ListView时的注意事项有哪些
来源:互联网 发布:sql查询多表相同列名 编辑:程序博客网 时间:2024/09/21 09:00
以下是从平时工作中总结出来的,不知道这些”小坑”,你遇到过没有:
一、setAdapter与addHeaderView语句的调用顺序有啥要求吗?
答:有要求。要求先addHeaderView然后才能setAdapter。否则在sdk 4.2版本的机器上就会崩掉。出现如下错误:
java.lang.IllegalStateException:Cannot add header view to list -- setAdapter has already been called.
原因可参见:从源码上分析ListView的addHeaderView和setAdapter的调用顺序
二、关于setOnItemClickListener的使用。在回调函数:
onItemClick里,获得ItemData的正确姿势是:
mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Object itemData = parent.getAdapter().getItem(position); if (itemData instanceof XXXItemBean) { ...... } } });
而不要直接使用Item的数据源数组。因为在listview存在Header或Footer的情况下,回调接口里的position是包含了header和footer的,并不只是item的数据。
三、当迫不得已需要在scrollView里面嵌套listView时,为了使得ListView能适应父节点scrollView的高度,你需要自定义一个CustomListView继承自ListView,然后重写onMeasure方法,具体写法如下:
@Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int expandSpec = MeasureSpec.makeMeasureSpec( Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST); super.onMeasure(widthMeasureSpec, expandSpec); }
四、在getView方法里inflate每个Item时,inflate方法的正确的用法是:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(mContext).inflate(R.layout.xxx, parent, false);
}
……
}
这样调用,你的Item布局里的高度属性才有效。
- 使用ListView时的注意事项有哪些
- 使用直流稳压电源有哪些注意事项
- COOKIE 应用的注意事项有哪些?
- 强制类型转换的注意事项有哪些
- ABAP代码检查的注意事项有哪些
- 需求测试注意事项有哪些?
- 需求测试注意事项有哪些
- 优化 listview 有哪些方法?
- 优化 listview 有哪些方法?
- 优化 listview 有哪些方法?
- listview中好看的分割线的样式有哪些?
- listView中添加了headerView时,使用position的注意事项
- ListView使用ViewHolder时控件数据错乱的注意事项
- ListView中getChildAt(index)的使用注意事项
- ListView中getChildAt(index)的使用注意事项
- ListView中getChildAt(index)的使用注意事项
- ListView中getChildAt(index)的使用注意事项
- ListView中getChildAt(index)的使用注意事项
- FreeRTOS queue usage
- where条件
- WebRTC音频模块
- CRC校验
- 基于Vue2.0+Vue-router构建一个简单的单页应用
- 使用ListView时的注意事项有哪些
- 爬虫技巧
- vue中的js类表达式
- linux命令下导入和导出mysql 数据
- 算法
- 函数
- android源码中打包so到apk的方法
- 动态规划----传纸条
- HashSet类注释翻译、fast-fail、源码分析