Я знаю, что этот вопрос задан раньше, но я думаю, что я действительно близок к моему решению, и поэтому я хочу сделать это. Я использую ListView и заполняю его некоторыми данными. Теперь я пытаюсь заполнить его несколькими дополнительными данными, когда пользователь достигает дна. Это должно продолжаться до тех пор, пока в ListView будет меньше 100 элементов. Но приведенный ниже код добавляет все данные сразу, когда я впервые прокручиваю его донизу. Я думаю, что есть десятки вызовов моего метода асинхронного поиска, который загружает больше данных.ListView onScroll вызывается несколько раз
@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("");
}
}
Есть ли вообще вокруг? Как я могу убедиться, что при достижении дна только один вызов асинхронизации?
Спасибо, что помогли. Но теперь List List прокручивается вверху каждого раза при добавлении новых элементов. Что я могу сделать, чтобы помочь? –
изменить связанный список, связанный со списком, и вызвать notifydatasetchanged() при завершении задачи –
Я уже это делаю. –