2014-09-04 65 views
0

我想檢測頂部列表視圖,我正在使用此方法。檢測列表視圖滾動的頂部

@Override 
      public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { 
       if (firstVisibleItem == 0) 
        swipeRefreshLayout.setEnabled(true); 
       else 
        swipeRefreshLayout.setEnabled(false); 
      } 

這工作正常,但問題是我已附加標題視圖列表以及。當我向上滾動時,只要第一個項目可見(不是Header視圖),它就會調用pull來刷新列表視圖。我如何檢測列表的標題是完全可見的。 我的列表視圖

View imageSlider = inflater.inflate(R.layout.image_slider_layout, null, false); 
findViewById(imageSlider); 

mPullRefreshListView.addHeaderView(imageSlider); 

private void findViewById(View view) { 
     mViewPager = (ViewPager) view.findViewById(R.id.view_pager); 
     mIndicator = (CirclePageIndicator) view.findViewById(R.id.indicator); 
    } 
+0

請發佈您的列表視圖與標題以及。重現這種行爲會更容易。 – Anthea 2014-09-04 07:27:24

+0

@Anthea Ihave添加了代碼。請看一看。 – user3789702 2014-09-04 07:31:23

+0

閱讀下面的答案,它告訴你什麼時候標題完全可見 – Techfist 2014-09-04 07:34:17

回答

4

嗯,有趣的答案就在onTouch聽衆而不是onScroll,請參閱下面的實現,它正好告訴◆當頭部完全可見,可以進一步細化邏輯..它只是一個快速實施形成我。

// Set a on touch listener for your list 
    mList.setOnTouchListener(new OnTouchListener(){ 

     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      // get the top of first child 
      View mView = mList.getChildAt(0); 
      int top = mView.getTop(); 


      switch(event.getAction()){ 

      case MotionEvent.ACTION_MOVE: 
       // see if it top is at Zero, and first visible position is at 0 
       if(top == 0 && mList.getFirstVisiblePosition() == 0){ 
        Toast.makeText(MainActivity.this, "Header Item Visible", 
          Toast.LENGTH_SHORT).show(); 
       } 
      } 
      // dont forget to retrun false here 
      return false; 
     } 

    }); 
相關問題