SwipeRefreshLayout中的ExpandableListView没有正确滚动

时间:2015-08-17 22:28:06

标签: android expandablelistview swiperefreshlayout

我遇到的问题是可扩展列表视图能够正确向下滚动,但是当我尝试向上滚动可扩展列表视图时,它会启动刷新。我可以在首次向下滑动时向上滚动可展开列表,然后再向上滚动。我想知道是否可以仅在列表顶部或正确向上滚动时刷新可扩展列表。我知道列表视图有一个onScrollListener,所以有类似于可扩展列表的东西吗?欢迎任何帮助或其他建议

由于

2 个答案:

答案 0 :(得分:0)

swipeRefreshLayout.setEnabled(false);
    expandableListView.setOnScrollListener(new AbsListView.OnScrollListener() {
        @Override
        public void onScrollStateChanged(AbsListView view, int scrollState) {

        }

        @Override
        public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
            int topRowVerticalPosition = (expandableListView == null || expandableListView.getChildCount() == 0) ? 0 : expandableListView.getChildAt(0).getTop();
            swipeRefreshLayout.setEnabled(firstVisibleItem == 0 && topRowVerticalPosition >= 0);
        }
    });

答案 1 :(得分:-1)

@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
    boolean allow = false;

    if(visibleItemCount>0) {
        long packedPosition = elvMounters.getExpandableListPosition(firstVisibleItem);
        int groupPosition = ExpandableListView.getPackedPositionGroup(packedPosition);
        int childPosition = ExpandableListView.getPackedPositionChild(packedPosition);
        allow = groupPosition==0 && childPosition==-1 && elv.getChildAt(0).getTop()==0;
    }

    mSwipeRefreshLayout.setEnabled(allow);
}