ListView使用技巧
Android群英传-第4章ListView使用技巧 总结
- 1、设置Item之间的分隔线
android:divider="your color"(设置分隔线透明可以@null)
android:dividerHeight="10dp"
- 2、隐藏ListView滚动条
android:scrollbars="none"
- 3、取消ListView的Item点击效果
android:listSelector="#00000000"
- 4、设置ListView需要显示在第几项
mListView.setSelection(position);
这个方法类似scrollTo,是瞬间完成移动的,如果需要平滑移动,可以这样:
mListView.smoothScrollBy(distance,duration);
mListView.smoothScrollByOffset(offset);
mListView.smoothScrollToPosition(index);
- 5、遍历ListView中的所有Item
for(int i = 0; i < mListView.getChildCount(); i++){
View view = mListView.getChildAt(i);
}
- 6、ListView为空时(没有数据)显示对应的提示View
mListView.setEmptyView(your empty view);
- 7、OnScrollListener内的onScroll()回调方法内的四个参数(onScroll在滑动时一直调用)
- firstVisibleItem:当前能看见的第一个Item的ID(从0开始)
- visibleItemCount:当前能看见的Item总数(包括没显示完整的item)
- totalItemCount:整个ListView的Item总数
小应用1:
if(firstVisibleItem + visibleItemCount == totalItemCount && totalItemCount > 0){
// 滚动到最后一行
}
小应用2:
if(firstVisibleItem > lastVisibleItemPosition){
// 上滑
}else if(firstVisibleItem < lastVisibleItemPosition){
// 下滑
}
// lastVisibleItemPosition可以是定义的成员变量来记录上一次第一个可视的item的id
另外ListView还提供了一个封装好的2个方法:
// 获取可视区域内最后一个Item的id
mListView.getLastVisiblePosition();
// 获取可视区域内第一个Item的id
mListView.getFirstVisiblePosition();
-
8、ViewConfiguration.get(this).getScaledTouchSlop();这个方法可以获取系统认为产生了滑动的像素距离(正值)
-
9、在BaseAdapter中除了几个常见的可覆盖的方法,还有2个比较有意思的方法:
@Override
public int getItemViewType(int position){
return type;
}
// 这个方法可以根据position获取对应的item的type,有什么用呢?可以的getView方法内调用getItemViewType(position)方法,获取对应position的类型,例如可以根据类型加载不同的布局文件(类似聊天对话框)的实现。
@Override
public int getViewTypeCount(){
return count;
}
// 这个方法和上面的方法是对应的,一共有多少种类型,就返回对应的count值,例如类似普通的聊天对话框,这里就可以返回2(in,out)