Android 从底部刷卡时回收器视图获取数据
我想在用户触摸回收器时获取数据,并在回收器已经处于底部时向下滚动(如从底部刷卡,但回收器无法再滚动时)。有什么想法吗 多谢各位Android 从底部刷卡时回收器视图获取数据,android,android-recyclerview,Android,Android Recyclerview,我想在用户触摸回收器时获取数据,并在回收器已经处于底部时向下滚动(如从底部刷卡,但回收器无法再滚动时)。有什么想法吗 多谢各位 @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); StaggeredGridLayoutManager manager = (Staggered
@Override public void onScrolled(RecyclerView recyclerView, int dx, int dy)
{
super.onScrolled(recyclerView, dx, dy);
StaggeredGridLayoutManager manager =
(StaggeredGridLayoutManager) recyclerView.getLayoutManager();
int visibleItemCount = manager.getChildCount();
int totalItemCount = manager.getItemCount();
int[] firstVisibleItems = manager.findFirstVisibleItemPositions(null);
if (firstVisibleItems != null && firstVisibleItems.length > 0) {
}
if (visibleItemCount + pastVisibleItems >= totalItemCount) {
}
}
检查此开源库,例如: 它有一个setupMoreLoading方法,当
X
元素被滚动时,它会附加侦听器和调用方法
这里就是这样做的:
...
mInternalOnScrollListener = new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
processOnMore();
if (mExternalOnScrollListener != null)
mExternalOnScrollListener.onScrolled(recyclerView, dx, dy);
if (mSwipeDismissScrollListener != null)
mSwipeDismissScrollListener.onScrolled(recyclerView, dx, dy);
}
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
if (mExternalOnScrollListener != null)
mExternalOnScrollListener.onScrollStateChanged(recyclerView, newState);
if (mSwipeDismissScrollListener != null)
mSwipeDismissScrollListener.onScrollStateChanged(recyclerView, newState);
}
};
mRecycler.addOnScrollListener(mInternalOnScrollListener);
....
private void processOnMore() {
RecyclerView.LayoutManager layoutManager = mRecycler.getLayoutManager();
int lastVisibleItemPosition = getLastVisibleItemPosition(layoutManager);
int visibleItemCount = layoutManager.getChildCount();
int totalItemCount = layoutManager.getItemCount();
if (((totalItemCount - lastVisibleItemPosition) <= ITEM_LEFT_TO_LOAD_MORE ||
(totalItemCount - lastVisibleItemPosition) == 0 && totalItemCount > visibleItemCount)
&& !isLoadingMore) {
isLoadingMore = true;
if (mOnMoreListener != null) {
mMoreProgress.setVisibility(View.VISIBLE);
mOnMoreListener.onMoreAsked(mRecycler.getAdapter().getItemCount(), ITEM_LEFT_TO_LOAD_MORE, lastVisibleItemPosition);
}
}
}
。。。
mInternalOnScrollListener=new RecyclerView.OnScrollListener(){
@凌驾
已填空的公共空间(RecyclerView RecyclerView、int dx、int dy){
super.onScrolled(recyclerView、dx、dy);
processOnMore();
if(mExternalOnScrollListener!=null)
onScrolled(recyclerView、dx、dy);
if(mSwipeDismissScrollListener!=null)
mSwipeDismissScrollListener.onScrolled(recyclerView、dx、dy);
}
@凌驾
CrollStateChanged上的公共无效(RecyclerView RecyclerView,int newState){
super.onScrollStateChanged(recyclerView、newState);
if(mExternalOnScrollListener!=null)
onScrollStateChanged(recyclerView、newState);
if(mSwipeDismissScrollListener!=null)
mSwipeDismissScrollListener.onScrollStateChanged(recyclerView,newState);
}
};
mRecycler.addOnScrollListener(mInternalOnScrollListener);
....
私有void processOnMore(){
RecyclerView.LayoutManager LayoutManager=mRecycler.getLayoutManager();
int lastVisibleItemPosition=getLastVisibleItemPosition(layoutManager);
int visibleItemCount=layoutManager.getChildCount();
int totalItemCount=layoutManager.getItemCount();
if(((totalItemCount-lastVisibleItemPosition)visibleItemCount)
&&!isLoadingMore){
isLoadingMore=true;
如果(mOnMoreListener!=null){
mmorepregress.setVisibility(View.VISIBLE);
mOnMoreListener.onMoreSask(mRecycler.getAdapter().getItemCount(),项目左\u到\u加载\u更多,最后一个VisibleItemPosition);
}
}
}
试试这个:
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy)
{
super.onScrolled(recyclerView, dx, dy);
StaggeredGridLayoutManager manager = (StaggeredGridLayoutManager) recyclerView.getLayoutManager();
if(manager.findLastVisibleItemPosition() == manager.getItemCount()-1)
{
// We have reached the end of the recycler view.
}
}
15分钟前你也问过同样的问题,对吗?您的代码的结果是什么?先生,虽然此链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接供参考。如果链接页面发生更改,则仅链接的答案可能无效。请看我想从底部滑动以加载更多项目的手势。这将在最后一个元素可见时获取数据,而不是在到达底部时