【发布时间】:2015-02-07 11:49:35
【问题描述】:
我知道以前有人问过这个问题,但我认为我真的很接近我的解决方案,因此我希望这样做。 我正在使用 ListView 并用一些数据填充它。现在,当用户到达底部时,我正在尝试用更多数据填充它。只要 ListView 中的项目少于 100 个,这应该会继续。但是当我第一次将其滚动到底部时,下面的代码会立即添加所有数据。我猜我的异步方法有数十次调用会加载更多数据。
@Override
public void onScroll(AbsListView absListView, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
scrollTask myscrolltask = new scrollTask();
int lastVisibleIndex = absListView.getLastVisiblePosition();
if(lastVisibleIndex != totalItemCount - 1)
{
System.out.print("lastVisibleIndex "+lastVisibleIndex);
System.out.print("totalItemCount-1 " + (totalItemCount-1));
myscrolltask.cancel(true);
return;
}
if(moreNewsAvailable == 0)
return;
if(totalItemCount > 75)
return;
Log.v("Total Item Count", String.valueOf(totalItemCount));
int lastItem = firstVisibleItem + visibleItemCount;
if(lastItem == totalItemCount && totalItemCount<=75 && moreNewsAvailable==1 && lastVisibleIndex != -1 && totalItemCount!=0) //Means that you have reached the bottom
{
Log.v("LastVisibleItemPosition", String.valueOf(lastVisibleIndex));
setProgressBarIndeterminateVisibility(true);
myscrolltask.execute("");
}
}
还有吗?如何确保在到达底部时只对 async 进行一次调用?
【问题讨论】:
标签: java android android-listview android-asynctask onscrolllistener