编程

当前位置:澳门新莆京娱乐官网 > 编程 > 各种情况下的

各种情况下的

来源:http://www.drgigabytes.com 作者:澳门新莆京娱乐官网 时间:2020-03-01 22:48

ListView和RecyclerView差不多,就不多做解释了

如果想要使用ScrollView来监听,那就要重写ScrollView,代码如下:

关于ListView的滑动底部监听其实和RecyclerView的判断差不多,代码如下:

ListView.setOnScrollListener(new OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { if((scrollState == OnScrollListener.SCROLL_STATE_IDLE) && view.getLastVisiblePosition() == (view.getCount && !isRefreshing) { //处理逻辑 } } } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { } }); 

在写项目的时候总是会碰到上拉自动加载更多这个需求,但是又不想用PullToRefresh,其实我们可以直接判断出来是否已经滑动到底端,如果滑动到底端则加载。一般的需求有在ScrollView、RecyclerView、ListView中自动加载

解释一下上面的判断,当状态为SCROLL_STATE_IDLE时,并且目前可见的最后一个item的位置为总数-1,并且当前不在刷新状态中(因为有的时候需要网络请求,所以可能滑动到底部后一直请求接口,定义一个变量来判断一下),然后就可以处理逻辑了

以前工作的时候碰到过这些需求,当时在网上找也没有找到合适的(澳门新莆京娱乐官网,确实当时技术很菜),过了好久了,分享出来,希望后来又有需求的少碰坑-

当然可以在布局的后面加一个FooterView,加载数据的时候显示『正在加载...』,加载到没有数据的时候显示一个『- end -』之类的

没写Demo,有兴趣的可以自己试试啦~

洗洗睡了,凌晨1:05

爱生活,爱小丽,爱Android

onScrollBottomListener bottomListener;public void setOnScrollBottomListener(onScrollBottomListener bottomListener){ this.bottomListener = bottomListener;}public interface onScrollBottomListener{ void onBottom();} @Overrideprotected void onScrollChanged(int l, int t, int oldl, int oldt) { super.onScrollChanged(l, t, oldl, oldt); if(getHeight() + getScrollY() >= getChildAt.getMeasureHeight{ if(bottomListener != null){ bottomListener.onBottom(); } }} 

在RecyclerView中判断是否滑动到底部,其实就是判断是否已经达到了各种情况下的。最后一个可见的item && 滑动结束,伪代码如下

最后关于ScrollView滑动到底部,因为ScrollView没有停止滑动的监听,所以使用要慎重!

看的出来,我们定义了一个接口来回调,因为ScrollView里只能包含一个布局,所以可以根据这个特性来判断,所以在滑动事件监听里获取到当前ScrollView的高度和Y轴的滑动值的相加来和ScrollView包含的布局的高度来进行对比,如果大于的话那么就等于滑动到底部(但是这个方法会调用好多次

RecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { if (newState == RecyclerView.SCROLL_STATE_IDLE && (layoutManager.findLastVisibleItemPosition() == layoutManager.getItemCount && !isRefreshing) { isRefreshing = true; //处理逻辑 } }});

本文由澳门新莆京娱乐官网发布于编程,转载请注明出处:各种情况下的

关键词: