gpt4 book ai didi

java - 当到达 GridView 末尾时无限调用 "onScroll"

转载 作者:太空宇宙 更新时间:2023-11-04 11:01:33 24 4
gpt4 key购买 nike

我发现以下代码可以在到达 gridview 末尾时执行某些操作:

    GridView gridview = (YMAnimatedGridview) v.findViewById(R.id.my_gridview);
gridview.setAdapter(adapter);
final View footerView = mainView
.findViewById(R.id.my_grid_footer_view);
gridview.setOnScrollListener(new GridView.OnScrollListener() {

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

if (firstVisibleItem + visibleItemCount == totalItemCount) {

// last item in grid is on the screen, show footer:
fetchMoreItems();

}
}

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

问题是,当我到达 gridView 的末尾时,会连续调用此方法。

private void fetchMoreItems() {
Log.i(LOG_TAG, "Reached the end of grid view"); //for debbug purposes
Integer lastIndex = thumbnails.length; //This is a Bitmap array with the data I'm alredy showing
Cursor cursor = getData();
thumbnails = concat(thumbnails, new Bitmap[30]);
Integer lastIndexToRun = Math.min(30, cursor.getCount() - lastIndex);
for(int j = 0; j < lastIndexToRun; j++) {
Integer i = j + lastIndex;
cursor.moveToPosition(i);
thumbnails[i] = getThumbnail(i);
}
adapter.notifyDataSetChanged(); //This is the adapter used to fill the gridview
cursor.close();
}

我认为我的错误应该是在 fetchMoreItems() 方法中,但由于这是我第一次使用 GridView,所以我不确定

最佳答案

您需要避免多次调用该方法,如下所示:

private int beforeLastItem;

@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
final int lastItem = firstVisibleItem + visibleItemCount;
if (lastItem == totalItemCount) {
// last item in grid is on the screen, show footer:
if (beforeLastItem != lastItem){ //to avoid multiple calls for the last item
fetchMoreItems();
beforeLastItem = lastItem;
}
} else {
beforeLastItem = lastItem;
}
}

关于java - 当到达 GridView 末尾时无限调用 "onScroll",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46848937/

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