Listview的使用技巧总结
1.修改ListView默认滑动条的样式非常简单,只需要添加一个xml属性即可:
<span style="font-family:Courier New;font-size:12px;"><span style="font-size:14px;">android:scrollbarThumbVertical="@drawable/scroll_vertical_thumb"</span></span>
2.ViewHolder的作用
就是一个持有者的类,他里面一般没有方法,只有属性,作用就是一个临时的储存器,把你getView方法中每次返回的View存起来,可以下次再用。
这样做的好处就是不必每次都到布局文件中去拿到你的View,提高了效率,一般在adapter中使用
3.ListView.getCount()与ListView.getChildCount()的区别
ListView.getCount()方法;实际上是AdapterView.getCount(),返回的是其Adapter.getCount()返回的值.也就是”所包含的Item总个数”.
ListView.getChildCount();实际上是ViewGroup.getChildCount(),返回的是显示层面上的”所包含的子View个数”.
是当item少不需要滑动时,两者相同。当item多,需要滑动时,ListView.getCount()多于ListView.getChildCount()
4.ListView.setOnScrollListener()参数详解
listView.setOnScrollListener(new OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
/**
firstVisibleItem表示在现时屏幕第一个ListItem(部分显示的ListItem也算)在整个ListView的位置(下标从0开始)
**/
Log.i("firstVisibleItem", String.valueOf(firstVisibleItem));
/**
visibleItemCount表示在现时屏幕可以见到的ListItem(部分显示的ListItem也算)总数
**/
Log.i("visibleItemCount", String.valueOf(visibleItemCount));
/**
totalItemCount表示ListView的ListItem总数
**/
Log.i("totalItemCount", String.valueOf(totalItemCount));
/**
listView.getFirstVisiblePosition()表示在现时屏幕第一个ListItem(第一个ListItem部分显示也算)在整个ListView的位置(下标从0开始)
**/
Log.i("firstPosition", String.valueOf(listView.getFirstVisiblePosition()));
/**
listView.getLastVisiblePosition()表示在现时屏幕最后一个ListItem(最后ListItem要完全显示出来才算)在整个ListView的位置(下标从0开始)
**/
Log.i("lasPosition", String.valueOf(listView.getLastVisiblePosition()));
}
});
转载:http://blog.csdn.net/zanelove/article/details/43735085
5.ListView 去除边缘阴影、选中色、拖动、底部上拉、顶部下拉背景色等
去除下滑到底部,上拉时出现的蓝色区域
android:overScrollMode="never"
去除ListView滑到顶部和底部时边缘的黑色阴影:
android:fadingEdge="none"
去除拖动时默认的黑色背景:
android:cacheColorHint="#00000000"
去除选中时的黄色底色:
android:listSelector="#00000000"
去除行与行之间的黑线:
list.setDivider(null);
ListView刷新后自动滚到最底部:
list.setSelection(msgList.getAdapter().getCount()-1);
6.listview滚到指定位置
private void setListViewPos(int pos) {
if (android.os.Build.VERSION.SDK_INT >= 8) {
mListView.smoothScrollToPosition(pos);
} else {
mListView.setSelection(pos);
}
}
如果是要置回到头部,就传入0;如果是滚动到最后一个,就传入mListView.getCount() - 1。补一点,记得设置mListView.setSelected(true)
转载:http://blog.csdn.net/xyz_fly/article/details/9246709