gpt4 book ai didi

android - RecyclerView OnScrollListener() 问题

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:08:04 27 4
gpt4 key购买 nike

我在 json 中有大约 32 条记录,我正在使用 RecyclerView 来显示它们并且我已经实现了 OnScrollListener(...)

问题

我启动了一个 Activity ,我获取了所有 32 条记录,现在当我滚动时,为什么我再次一次又一次地获得相同的 32 条记录,每当我滚动时,这是我对 OnScrollListener() 的实现

public void initializeOnScrollForRecyclerView() {
mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {

int visibleItemCount = recyclerView.getLayoutManager().getChildCount();
int totalItemCount = recyclerView.getLayoutManager().getItemCount();
int pastVisiblesItems = ((LinearLayoutManager) recyclerView.getLayoutManager()).findFirstVisibleItemPosition();

if (!isLoading) {
if ((visibleItemCount + pastVisiblesItems) >= totalItemCount) {
isLoading = true;
mPostPresenter.loadPosts(false);
}
}
}
});
}

最佳答案

实现似乎是正确的,但在一个条件下它失败了,当 dy > 0 时像这样尝试(也把它放在 Activity 的 OnCreate 中):

    private boolean loading = true;

recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
}


@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy)
{

if (loading) {
if (dy > 0) //check for scroll down
{
visibleItemCount = layoutManager.getChildCount();
totalItemCount = layoutManager.getItemCount();
pastVisiblesItems = layoutManager.findFirstVisibleItemPosition();

if ((visibleItemCount + pastVisiblesItems) >= totalItemCount) {
loading = false;

Log.v("...", " Reached Last Item");
loadMoreVideos(searchVideos);
}

}
}
}
});

关于android - RecyclerView OnScrollListener() 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35954410/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com