2014-03-06 33 views
0

我有一個自定義列表視圖,當用戶將他/她的手指仍在屏幕上時,我需要能夠上下滑動。如何才能做到這一點?我在自定義listview類中提供了ontouchEvent。我試過this.setY(event.getY()),但它確實重新工作。我怎樣才能做到這一點?如何在手指位置上滑動視圖

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    //System.out.println("First ["+this.getFirstVisiblePosition()+"]"); 

    float y = event.getY(); 


    switch (event.getAction()) { 
     case MotionEvent.ACTION_MOVE: { 

      this.setY(event.getY()); 

      if ((y - startY) > THRESHOLD && STATE_REFRESH_ENABLED && !STATE_REFRESHING && Ref_once) { 
       if(mListener!=null) mListener.onRefresh(); 
       Log.d("CUSTOM LIST"," FOODHOTER LIST LISTENER WORKING"); 
       this.setClickable(false); 
       Ref_once=false; 
      } 
     } 
     break; 
     case MotionEvent.ACTION_DOWN: { 
      startY = y; 
      // STATE_REFRESH_ENABLED = getFirstVisiblePosition() == 0; // We are on the first element so we can enable refresh 
         STATE_REFRESH_ENABLED =listIsAtTop() ; 

      this.setClickable(true); 
     } 
     case MotionEvent.ACTION_UP: { 
      STATE_REFRESHING = false; 
      this.setClickable(true); 
      Ref_once=true; 
     } 

    } 
    return super.onTouchEvent(event); 
} 

回答

0

我想你需要你的列表視圖,以匹配拍攝的當前ysetScrollY()onTouch聽衆。

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    //System.out.println("First ["+this.getFirstVisiblePosition()+"]"); 

    final float y = event.getY(); 
    final float scrollY = listview.getScrollY(); 

    switch (event.getAction()) { 
     case MotionEvent.ACTION_MOVE: { 

      listview.setScrollY(Y + scrollY); 

      if ((y - startY) > THRESHOLD && STATE_REFRESH_ENABLED && !STATE_REFRESHING && Ref_once) { 
       if(mListener!=null) mListener.onRefresh(); 
       Log.d("CUSTOM LIST"," FOODHOTER LIST LISTENER WORKING"); 
       this.setClickable(false); 
       Ref_once=false; 
      } 
     } 
     break; 
     case MotionEvent.ACTION_DOWN: { 
      startY = y; 
      // STATE_REFRESH_ENABLED = getFirstVisiblePosition() == 0; // We are on the first element so we can enable refresh 
         STATE_REFRESH_ENABLED =listIsAtTop() ; 

      this.setClickable(true); 
     } 
     case MotionEvent.ACTION_UP: { 
      STATE_REFRESHING = false; 
      this.setClickable(true); 
      Ref_once=true; 
     } 

    } 
    return super.onTouchEvent(event); 
} 
+0

不行,它不起作用。我需要能夠將整個列表視圖向下拖動,當我將手指向下拖動並向上移動時,我將手指向上移動 – Samantha

+0

進行了一些更改。現在引用listview,不知道它的變量名是從你的代碼中得到的,並且改變爲基於ACTION_MOVE的增量滾動。 –

相關問題