Android RecyclerView OnScrollListener

图片说明
public class MyRecyclerView extends RecyclerView implements RecyclerView.OnScrollListener
{
/**

  • 记录当前第一个View */ private View mCurrentView;

private OnItemScrollChangeListener mItemScrollChangeListener;

public void setOnItemScrollChangeListener(OnItemScrollChangeListener mItemScrollChangeListener)
{
this.mItemScrollChangeListener = mItemScrollChangeListener;
}

public interface OnItemScrollChangeListener
{
void onChange(View view, int position);
}

public MyRecyclerView(Context context, AttributeSet attrs)
{
super(context, attrs);
// TODO Auto-generated constructor stub
this.setOnScrollListener(this);
}

@Override
protected void onLayout(boolean changed, int l, int t, int r, int b)
{
super.onLayout(changed, l, t, r, b);

mCurrentView = getChildAt(0);

if (mItemScrollChangeListener != null)
{
    mItemScrollChangeListener.onChange(mCurrentView, getChildPosition(mCurrentView));
}

}

@Override
public void onScrollStateChanged(int arg0)
{
}

/**
*

  • 滚动时,判断当前第一个View是否发生变化,发生才回调
    */
    @Override
    public void onScrolled(int arg0, int arg1)
    {
    View newView = getChildAt(0);

    if (mItemScrollChangeListener != null)
    {
    if (newView != null && newView != mCurrentView)
    {
    mCurrentView = newView ;
    mItemScrollChangeListener.onChange(mCurrentView, getChildPosition(mCurrentView));
    }
    }

}

}
各位版主大神,这种是什么错误,该怎么解决呢?

你仔细看一下,这个不是接口,是类。需要extends
而不是implememt 。希望采纳。

view不要直接实现各种Listener,应为这些Listener一般都是view内部定义的一个接口或者抽象类,你应该把Listener作为一个成员变量,从外部传入,