2012-11-15 22 views
2

誰能告訴我爲什麼我不能讓onOverScrolled在我下面的代碼名爲:的Android的ListView onOverScroll永遠不會被調用

public class KasOverScrollListenableListView extends ListView { 

    public interface OverScrollListener{ 
     void onOverScroll(int scrollx, int scrollY,boolean clampedX, boolean clampedY); 
    } 
    private OverScrollListener mOverScrollListener= null; 
    public KasOverScrollListenableListView(Context context, AttributeSet attrs, 
      int defStyle) { 
     super(context, attrs, defStyle); 
    } 

    public KasOverScrollListenableListView(Context context, AttributeSet attrs){ 
     this(context,attrs,0); 
    } 

    public KasOverScrollListenableListView(Context context){ 
     this(context,null,0); 
    } 

    protected void onOverScroll(int scrollX, int scrollY, boolean clampedX, boolean clampedY){ 
     Log.i("overScrolling", "overScrolling is " + scrollY); 
     // if the version of the system higher than 2.3 then do the following things. 
     if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD){ 
//   super.onOverScrolled(scrollX, scrollY, clampedX, clampedY); 
      if(null != mOverScrollListener){ 
       mOverScrollListener.onOverScroll(scrollX, scrollY, clampedX, clampedY); 
      } 
     } 

    } 

    public void setOnOverScrollListener(OverScrollListener listener){ 
     mOverScrollListener = listener; 
    } 
} 

我永遠無法得到的日誌輸出,這意味着該函數不被調用,而這個listview實際上是overscrolled.I真的很感激聽到你的想法。

+0

您正在使用哪個Android? – Sagar

+1

要使用「onOverScroll()」,您需要API等級9或以上。 onOverScrolledBy()方法由於超滾動操作而調用此方法。如果您使用的是Android 2.2,則無法使用,請嘗試使用Android 2.3即API級別9. – Sagar

+0

感謝您的回覆。我使用的是高於9的API。我只是想聽android的overScrolling,但沒有找到一種方法。似乎覆蓋的函數onOverscroll()從來沒有被調用,我只是很困惑這個。 – gothion

回答

1

不知道這是否有幫助,但下面的鏈接中的示例調用super.overScrollBy(...)。我可以使用此代碼進入onOverScroll。希望它可以幫助...

OverScroll ListView Sample code

0

只是......如果它會需要有人。我在Github上分享了工作示例。上2.3+

0

正常工作的方法是onOverScrolled,不onOverScroll

您可以通過在方法簽名上方放置@Override來檢測這些錯誤。編譯器會讓你知道你是否真的重寫了一個方法。

相關問題