2015-10-15 1 views
1

У меня возникла проблема с реализацией setOnScrollListener в gridview, когда новые данные непрерывно загружаются в цикл без прокрутки пользователя. Я хочу дождаться, пока пользователь перейдет к концу, и только затем, чтобы загрузить новые данные. Как это сделать? Это код, который дает мне бесконечный цикл без прокрутки:setOnScrollListener бесконечный цикл и загружается без прокрутки в GridView?

gv.setOnScrollListener(new EndlessScrollListener() { 
     @Override 
     public boolean onLoadMore(int page, int totalItemsCount) { 

      load_more_data(); 

      // Triggered only when new data needs to be appended to the list 
      // Add whatever code is needed to append new items to your AdapterView 
      //  customLoadMoreDataFromApi(page); 
      // or customLoadMoreDataFromApi(totalItemsCount); 
      return true; // ONLY if more data is actually being loaded; false otherwise. 
     } 
    }); 

ответ

0

OnScrollListener, имеет onScroll, который предоставляет вам информацию упираться в firstVisibleItem, индекс первой видимой ячейки, visibleItemCount, количество видимых ячеек и totalItemCount в количество элементов в списке. Если вы реализуете его в следующем методе

@Override 
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { 
    if ((firstVisibleItem + visibleItemCount) >= totalItemCount - 10) { 
     load_more_data(); 
    } 
} 

ваше приложение начнет загрузку следующих элементов, когда threshoid totalItemCount - 10, достигается.

+0

Да, но это происходит без прокрутки? он идет автоматически? –

+0

Что вы подразумеваете под * автоматически *? – Blackbelt

+0

automaticaly - без пользовательской прокрутки, он просто загружается, когда приложение запускается, пока не будет больше данных, и заменяет элементы в gridview, вместо того, чтобы ждать прокрутки и добавлять элементы в gridview –

0

Пожалуйста, попробуйте это.

gridView.setOnScrollListener(new AbsListView.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) { 
      // TODO Auto-generated method stub 

      if((firstVisibleItem + visibleItemCount) >= totalItemCount - 5) 
      { 
       load_more_data(); 
      } 

     } 
    }); 
+0

эй, я пробовал этот код, но проблема такая же. Это автоматическая загрузка данных вместо ожидания прокрутки и заменяет элементы вместо добавления –

Смежные вопросы