标签:
1、判断是否滑到最底部以判断加载下一页
首先ListView implements OnScrollListener
再覆写onScrollStateChanged
public void onScrollStateChanged(AbsListView view, int scrollState) { /* * ListView.getCount()(实际上是 AdapterView.getCount()) 返回的是其 * Adapter.getCount() 返回的值。也就是“所包含的 Item 总个数”。 * ListView.getChildCount()(ViewGroup.getChildCount) 返回的是显示层面上的“所包含的子 * View 个数”。 * * 二者有什么不同?当 ListView 中的 Item 比较少无需滚动即可全部显示时,二者是等价的;当 Item * 个数较多需要滚动才能浏览全部的话, getChildCount() < getCount() 其中 getChildCount() * 返回的是当前可见的 Item 个数。 */ // 当不滚动时 if (scrollState == OnScrollListener.SCROLL_STATE_IDLE) { // 判断是否滚动到底部 //getChildAt是把footview也算进去的,lastChild获得的是footview View lastChild = getChildAt(getChildCount() - 1); if (view.getLastVisiblePosition() == view.getCount() - 1&&getBottom()-lastChild.getBottom()<=lastChild.getHeight()) { // 这里是footview一旦被看到就执行,真正意义上的bottomend是把lastChild.getHeight()换成0 xListener.onBottomEnd(); } } }
2、判断Listview是否可以上滑,即此时应该在最顶部
private void setIsAbleToPull() { // TODO Auto-generated method stub View firstChild = getChildAt(0); if (firstChild != null) { int firstVisiblePos = getFirstVisiblePosition(); // 如果首个元素的上边缘,距离父布局值为0,就说明ListView滚动到了最顶部,此时应该允许下拉刷新 if (firstVisiblePos == 0 && firstChild.getTop() == getResources().getDimension( R.dimen.listview_top_padding)) { ableToPull = true; } else { ableToPull = false; } } else { // 如果ListView中没有元素,也应该允许下拉刷新 ableToPull = true; } }
Done
标签:
原文地址:http://www.cnblogs.com/xingyyy/p/4334703.html