4

朋友我使用listview和滾動時加載內容,當它到達最後。但我面臨着錯誤,就像同一個網址被多次調用一樣,如果快速滾動,任何人都可以幫我解決這個問題。我已經走了SCROLL_STATE_IDLE,但不知道如何在我的代碼中實現。甚至當我沒有觸摸屏幕它的運行。我現在想知道如何停止的代碼在空閒state.Attaching下面在android listview中使用onScroll

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..."); 
    } 
    }); 
相關問題