Android刷卡刷新布局向上滚动以刷新

DJ-*_*DOO 5 android swiperefreshlayout

我已经为我的网格视图实现了一个刷卡刷新布局,如果我向下拉(滚动)以调用刷新,它就可以正常工作.

但是,我试图弄清楚当用户向上滚动时如何刷新.因此,当用户到达网格中的最后一个项目时(我的限制为10),所以当用户看到全部十个然后向上拉或尝试继续滚动时,我该如何刷新?

任何帮助表示赞赏.

DJ-*_*DOO 5

所以人们要么:不知道这个问题的答案,要么b:他们不愿意分享知识.

无论如何,经过很长一段时间我想出了自己的解决方案.我在网格中添加了一个滚动监听器,并在滚动到屏幕底部时进行计算,此时我从刷卡中重新调用onRefresh()方法进行刷新...

编辑 以添加更多信息

所以,我做了一些研究之后,计算当用户达到网格视图的底部我也跟着这样的问题和其他人获取.下面是我必须更改的代码,以便它可以使用本机刷新功能.我的改动是为了防止不断刷新.所以我的if语句中包含的是检查它当前不是刷新的,所以当我到达底部时它刷新了,但是我没有那个检查所以它不断刷新.然后,我必须检查我的网格中的项目总数,因为当用户到达最后一项(最后一项)时,应用程序也保持刷新,没有什么可以打破循环.希望这有一些帮助......

        worldBeersGrid.setOnScrollListener(new AbsListView.OnScrollListener() {
        @Override
        public void onScrollStateChanged(AbsListView absListView, int i) {

        }
        @Override
        public void onScroll(AbsListView absListView, int firstVisibleItem, int visibleItemCount, int totalItemCount) {

            int position = firstVisibleItem+visibleItemCount;
            int limit = totalItemCount;
            int totalItems = sharedpreferences.getInt("WORLD ITEM COUNT", 0);

            Log.i("TOTAL WORLD ITEMS", String.valueOf(totalItems));
            Log.i("LIMIT :::::::::::: ", String.valueOf(limit));
            Log.i("POSITION ::::::::::::", String.valueOf(position));
            Log.i("REFRESHING :::::::::::::::", String.valueOf(swipeRefreshLayout.isRefreshing()));

            if(position>=limit && totalItemCount>0 && !swipeRefreshLayout.isRefreshing() && position <totalItems){
                swipeRefreshLayout.setRefreshing(true);
                //In the below method I made my call to my ws...
                onRefresh();
            }
        }
    });
Run Code Online (Sandbox Code Playgroud)


And*_*ICE 5

stackoverflow中查看我的答案

Android支持库版本21中的SwipeRefreshLayout不支持从底部提取.我已经基于原始的SwipeRefreshLayout代码修改了SwipeRefreshLayoutBottom.它完全基于原始的Google代码,只有坐标反转和新写入的canChildScrollDown方法.所有修改都标记为TODO.

Bitbucker存储库