在厦门海关贸易贸易通APP一期接近收尾阶段,发现一个bug:滑动tab下拉刷新页面,当新闻listView滑下来时,再往下滑,无法上滑,而是直接刷新的bug,如下图。
解决:
在adapter、activity、fragment三个文件多处打log后将问题锁定在
ViewPagerFragment 中的checkCanDoRefresh()的最后return返回值始终为true。针对性打log发现getFirstVIsiblposition和getChildAt(0).getTop(),这个两个值始终为0,估计是某个事件拦截了ListView的这两个属性。
2. 于是在initView中监听mListView的滚动事件
mListView.setOnScrollListener(new OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
// TODO Auto-generated method stub
//Log.e("ViewPagerFragment_scrollStateChanged", "scrollState:"+scrollState);
Log.e("ViewPagerFragment_scrollStateChanged", "mListView.getChildAt(0).getTop():"+mListView.getChildAt(0).getTop());
getTop=mListView.getChildAt(0).getTop();
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
mfirstVisibleItem=firstVisibleItem;
然后用成员整形变量mfirstVisibleItem、getTop,代替getFirstVIsiblposition和getChildAt(0).getTop(),问题解决。
该滑动下拉刷新tab原型参考我博客中100+Android 开源项目分类汇总一(精品 )第三个开源项目android-Ultra-Pull-to-Refresh。
原文:http://1137907860.blog.51cto.com/10452906/1690523