4

Друзья Я использую listview и загружаю содержимое в прокрутку, когда он достигает в конце. Но я столкнулся с ошибкой, так как один и тот же URL-адрес вызывается более одного раза, если при прокрутке быстро кто-нибудь может помочь мне разрешить это. Я прошел через SCROLL_STATE_IDLE, но не знаю, как реализовать то же самое в моем коде. Также даже когда я не прикасаюсь к экрану его работы. Теперь я хочу знать, как остановить код на холостом ходу state.Attaching моего кода нижеusing onScroll in android listview

int start = 0; 
int limit = 3; 
loadingMore = false; 
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) { 
      // TODO Auto-generated method stub 
      int lastInScreen = firstVisibleItem + visibleItemCount; 


      if ((lastInScreen == totalItemCount)) { 

       if(loadingMore == false){     
       start = lastInScreen - 1;     
       url = "http://www.dskjhf.com/web-servic/request_response.php?type=get_articles&start=" 
         + start + "&end=" + limit; 
       grabURL(url);     
      } 
     }} 
    }); 

    protected void grabURL(String url) { 
    // TODO Auto-generated method stub 
    new BackgroundTask().execute(url); 
    loadingMore = true; 
} 

ответ

7

Проверено этот он поможет you..for мне это хорошо работает

 listView.setOnScrollListener(new OnScrollListener() { 
      private int currentVisibleItemCount; 
      private int currentScrollState; 
      private int currentFirstVisibleItem; 
      private int totalItem; 
      private LinearLayout lBelow; 


      @Override 
      public void onScrollStateChanged(AbsListView view, int scrollState) { 
       // TODO Auto-generated method stub 
       this.currentScrollState = scrollState; 
       this.isScrollCompleted();    
      } 

      @Override 
      public void onScroll(AbsListView view, int firstVisibleItem, 
        int visibleItemCount, int totalItemCount) { 
       // TODO Auto-generated method stub 
       this.currentFirstVisibleItem = firstVisibleItem; 
       this.currentVisibleItemCount = visibleItemCount; 
       this.totalItem = totalItemCount; 


      } 

      private void isScrollCompleted() { 
       if (totalItem - currentFirstVisibleItem == currentVisibleItemCount 
         && this.currentScrollState == SCROLL_STATE_IDLE) { 
       /** To do code here*/ 

        Page = Page + 1; 
        apiVariables = TCGAPIVariable.getSingletonObject(); 
        searchUrl = apiVariables.searchList(cityId, catId, area, 
          keyword, cuisine, type, cost, "" + Page, "20",uId); 
        Log.d("SEARCH_URL", searchUrl.trim()); 
        int totalRecord = Integer.parseInt(itemData.get(0) 
          .getTotalRecord()); 
        if (totalRecord > totalItem) { 
         if (TCGStaticMethods 
           .isInternetAvailable(SearchActivity.this)) 
          new SearchAsynTask(SearchActivity.this, searchUrl, 
            true).execute(); 
        } else { 
         LinearLayout llBelow = (LinearLayout) findViewById(R.id.pbSearchLististingBelow); 
         llBelow.setVisibility(View.GONE); 
        } 
       } 
      } 
     }); 
1

Проверки в onScrollStateChanged методы.

Значение SCROLL_STATE_IDLE является 0

setOnScrollListener(new OnScrollListener(){ 
    public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { 
     // TODO Auto-generated method stub 
    } 
    public void onScrollStateChanged(AbsListView view, int scrollState) { 
     // TODO Auto-generated method stub 
     if(scrollState == 0) Log.d(TAG", "scrolling is idele..."); 
    } 
    });