gpt4 book ai didi

Android ListView setOnScrollListener

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

我的 setOnScrollListener 有问题。每当我滚动到 ListView 的底部时,它就会一直调用我的异步任务。如何将 setOnScrollListener 设置为仅在到达底部后加载。

listview.setAdapter(adapter);
mProgressDialog.dismiss();

listview.setOnScrollListener(new OnScrollListener() {

@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
// TODO Auto-generated method stub
}

@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
int lastInScreen = firstVisibleItem + visibleItemCount;
if (lastInScreen == totalItemCount) {
new loadmore().execute();
} else {
}
}
);

最佳答案

只要您向下滚动 ListView ,就会调用 OnScroll 方法,因此最好的办法是使用某种填充,例如实现的 here。 .

public class EndlessScrollListener implements OnScrollListener 

private int visibleThreshold = 5;
private int currentPage = 0;
private int previousTotal = 0;
private boolean loading = true;

public EndlessScrollListener() {
}
public EndlessScrollListener(int visibleThreshold) {
this.visibleThreshold = visibleThreshold;
}

@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
if (loading) {
if (totalItemCount > previousTotal) {
loading = false;
previousTotal = totalItemCount;
currentPage++;
}
}
if (!loading && (totalItemCount - visibleItemCount) <= (firstVisibleItem + visibleThreshold)) {
// I load the next page of gigs using a background task,
// but you can call any function here.
new LoadGigsTask().execute(currentPage + 1);
loading = true;
}
}

@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
}
}

visibleThreshold – 在加载更多内容之前,当前滚动位置下方的最小项目数。

currentPage – 您加载的当前数据页

previousTotal – 上次加载后数据集中的项目总数

loading – 如果我们仍在等待最后一组数据加载,则为真。

关于Android ListView setOnScrollListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17473933/

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