ListView onScrollChanged始终返回0

时间:2014-07-20 23:59:19

标签: android android-listview

我创建了一个扩展ListView的类,以便我可以覆盖onScrollChanged,以便我可以判断列表是向上还是向下滚动。但是每次调用它时,所有值都为0.

为常规ScrollView执行此操作会返回我正在查找的值,这是否与ScrollView不同?

这是我的包装类

public class ImageScrollView extends ListView {

    OnScrollChangedListener listener;

    public interface OnScrollChangedListener{
        public void onScrollChangedListener(int l, int t, int oldl, int oldt);
    }

    public ImageScrollView(Context context) {
        super(context);
    }

    public ImageScrollView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    public void onScrollChanged(int l, int t, int oldl, int oldt){

        if(listener != null){
            listener.onScrollChangedListener(l,t,oldl,oldt);
        }
    }
}

1 个答案:

答案 0 :(得分:3)

对于listviewonScrollChanged总是会返回所有值0,显然也会返回getScrollY()等。onScrollListener根据您的需要,您必须实施onScroll界面,该界面将通过onScrollStateChangedonScroll(AbsListView list ...) { View c = list.getChildAt(0); if (c == null) { return; } //assuming all list items have same height int scrolly = -c.getTop() + list.getPaddingTop() + list.getFirstVisiblePosition() * c.getHeight(); // some code } 进行回调。 这些函数都不会为您提供实际的滚动值,因为您必须计算它,

例如在

{{1}}

请参阅以下帖子,我得到的答案最多 Android getting exact scroll position in ListView