2014-09-04 62 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; 
     } 

    });