listView在开发中使用的太多了,但是不少知识还是经常记不住,因今天把listView的一些方法和开发问题,统一整理记录下来。
一、方法或属性
1.stackFromBottom属性:true表示从列表底部开始向上排列。但要注意它是从上往下递增,新数据处在底部。
2.setTranscriptMode:设置数据更新时,滑动模式。有三个值:
alwaysScroll:更新,总是滚到最底部
disabled:满页后更新,不滚动
normal:最后一个item可见,更新时滚到最底部,否则不滚动。
3.setSelectFromTop(position,y)与setSelection(position)
(1)setSelectFromTop(position,y):精准定位,y表示选择的item到listView可见范围内最上边边缘的距离。
(2)setSelection(position):内部也调用了setSelectFromTop,但是y轴偏移量为0,可以做到定位,但是解决不了某一个item部分不可见的情况。
例:在做IM聊天页面的下拉刷新时,刷新成功后(有数据),需要把listView向上移动一个位置,以便让用户看到最新刷出来的数据,同时注意headView,设置偏移量。
二、注意事项:
1.多Item类型时异常:数组下标越界
解决:adapter的回调方法:getItemViewType(position)中,返回的值必须从0开始,依次增大,否则异常。
2.列表中checkBox滑动后状态混乱
解决:getView方法中先设置checkBox.setTag(index),将复选框与position关联,选中时通过getTag()方法获取当前复选框对应的位置。